2016-08-25 41 views
-1

在Perl中,我需要打印所有選擇的文件:Perl中發現輸入文件

./print.pl 1.txt 2.txt 3.txt 

的ARGV是2,我可以打印them.But然後我寫的命令,如:

./print.pl <1.txt 2.txt 

當我以這種方式運行時,輸出僅爲2.txt,ARGV爲0.如何將< 1.txt作爲輸入文件檢測到?

文件名是1.txt,'<'用於將1.txt放入代碼中。

+0

'<'使shell重定向作爲'@ ARGV'中唯一的元素,'1.txt'到'STDIN'的內容爲'print.pl'命令並且通過'2.txt'。 –

+1

I s'<1.txt'真的是文件名嗎?包括領先的'<?還是你想用一個來自stdin的文件和另一個作爲文件名給出的文件調用'print.pl'? – PerlDuck

+1

這就是你爲什麼使用3 arg打開的原因之一! – Sobrique

回答

-1

如果您確實有一個以<開頭的文件名,請將文件名作爲參數發送到引號中。

這版畫只是文件名:

perl -E 'say $ARGV[0]' "<1.txt" 
<1.txt 

這個小腳本打印出該文件的內容:

use warnings; 
use strict; 

for (@ARGV){ 
    open my $fh, '<', $_ or die $!; 
    print <$fh>; 
} 

例子:

perl script.pl "<1.txt" 
a 
b 
c