我正在尝试进行以下操作
perl something.pl -t happiness=LONGSTRING
LONGSTRING很长(150,000个字符)。它足以得到以下消息:" OSError:[Errno 7]参数列表太长"
我认为有一种方法可以重定向文件的输出。但是,我没有成功。
我期待的是:
perl something.pl -t happiness=<<<FILE.txt
其中FILE.txt包含一堆文本。我一直在努力争取&lt;或&lt;&lt;&lt;被perl脚本字面处理,我实际上在推动&#39; =&lt;&lt;
答案 0 :(得分:1)
这不是Perl的限制,而是OS / C库。
您可以尝试增加限制,请参阅here for more info。
假设您使用的是现代Linux内核,限制为stack size / 4
,要增加堆栈大小,请尝试ulimit -s
number
其中 {{ 1}} 是新的堆栈大小限制。
答案 1 :(得分:1)
perl something.pl -t happiness FILE.txt
你的第一个论点是幸福(假设这可能是另一个词,否则只是将它分配到something.pl中),然后分别读取FILE.txt,一次一行,或者啜饮整个事物(尽管可能不是建议使用150k +字符),然后按照正常情况进行处理。
当您访问脚本源时,重定向输出背后的想法变得毫无意义 - 人们重定向GNU工具之类的输出(即&#39; df -h&#39;),因为他们可以&#39; t(轻松)编辑工具的源代码以进行出价。
答案 2 :(得分:0)
也许你可以尝试一下这方面的内容(仅限* nix):
perl something.pl -t happiness="`cat FILE.txt`"
这基本上将FILE.txt
的内容转换为命令行可以传递给Perl脚本的字符串。我不建议这样做,并且正如其他人建议你应该提供一个文件名并使用它来从脚本中读取文件