Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 将文件内容用作perl参数_Linux_Perl - Fatal编程技术网

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`"