[英]perl How to read command line argument as if it's file content
我有一个接受文件名并打印文件内容的函数
#test.pl
while (<>) {
print $_;
}
exit(0);
我想在命令行上运行它,而不是文件名,我想在不更改脚本的情况下使用实际内容作为参数,类似于匿名FIFO(例如shell中的“ <(...)”运算符)来代替文件名字符串及其内容?
这是一个shell问题,但您未指定哪个shell。
SH
将数据直接传递到STDIN是最简单的。
printf 'foo bar' | test.pl
printf 'foo\nbar\n' | test.pl
test.pl <<'.'
foo
bar
.
重击
除了sh
的解决方案,您还可以使用以下方法:
test.pl <<<'foo bar'
test.pl <<<$'foo\nbar\n'
test.pl <( printf 'foo\nbar\n' )
最后一个避免使用STDIN。 (内部)这比其他解决方案要复杂,但是它允许您传递多个“虚拟文件”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.