Linux 将文件内容用作perl参数
我正试着做下面的事情Linux 将文件内容用作perl参数,linux,perl,Linux,Perl,我正试着做下面的事情 perl something.pl -t happiness=LONGSTRING 其中长串非常长(150000个字符)。它足够长,可以得到以下消息:“OSError:[Errno 7]参数列表太长” 我想应该有一种方法可以重定向文件的输出。然而,我没有成功地做到这一点 我希望做的事情大致如下: perl something.pl -t happiness=<<<FILE.txt 这不是perl的限制,而是OS/C库 您可以尝试增加限制,请参见 假设您
perl something.pl -t happiness=LONGSTRING
其中长串非常长(150000个字符)。它足够长,可以得到以下消息:“OSError:[Errno 7]参数列表太长”
我想应该有一种方法可以重定向文件的输出。然而,我没有成功地做到这一点
我希望做的事情大致如下:
perl something.pl -t happiness=<<<FILE.txt
这不是perl的限制,而是OS/C库 您可以尝试增加限制,请参见 假设您使用的是现代Linux内核,限制为
stack size/4
,要增加堆栈大小,请尝试ulimit-s
number
,其中number
是新的堆栈大小限制
perl something.pl -t happiness FILE.txt
您的第一个参数是happiness(假设这可能是另一个单词,否则只需在something.pl中指定它),然后分别读取FILE.txt,一次一行,或是对整个文件进行含糊处理(尽管可能不建议使用150k+字符),然后按照您通常的方式进行处理
当您可以访问脚本源代码时,重定向输出背后的想法就变得毫无意义了——人们重定向GNU工具(即“df-h”)等工具的输出,因为他们无法(轻松地)编辑工具的源代码来完成自己的工作。也许您可以尝试类似的方法(仅适用于*nix):
这基本上将
FILE.txt
的内容转换为字符串,命令行可以将其传递给Perl脚本。我不建议这样做,正如其他人建议的那样,您应该提供一个文件名,并使用它从脚本中读取文件为什么不让参数指示您要从文件中读取?如果文件的内容超出命令行可以接受的范围,不能将文件内容作为命令行参数传递。所以,你必须解决这个问题。一种方法是传递文件名(以及告诉命令读取文件的参数);另一种方法是将文件重定向到已知的文件描述符(0或标准输入是最常见的,但不一定是最好的,您可能需要一个参数来告诉脚本专门处理它)。但这就是问题所在-如果它太大,除非你能增加限制,否则你会被套住,但它只是一个新的、更大的限制。不会起作用,因为结果字符串仍然太长
perl something.pl -t happiness="`cat FILE.txt`"