閱讀時,我是新來的Perl。我已經編寫了以下代碼,以與輸入相反的順序讀取文件,並將這些值輸出到命令行。
#! /usr/bin/perl
use warnings;
if(@ARGV == 0)
{
die "No file name given \n";
}
my @argarr;
while(@ARGV != 0)
{
my $tmp = pop @ARGV;
push @argarr, $tmp;
}
foreach(@argarr)
{
#print $_;
#print "\n";
if (! open my $fh , "< $_")
{
print "unable to open $_\n";
}
while(<$fh>)
{
chomp;
print "$_\n";
}
}
但是它沒有按預期工作。而不是打印文件到STDOUT它顯示下面的錯誤:
Use of uninitialized value $fh in <HANDLE> at ./mtac.pl line 23.
readline() on unopened filehandle at ./mtac.pl line 23.
請幫助。
在頂部添加'use strict;',你會得到一個關於哪裏出錯的非常清晰的提示。 –
那卡萊逃避來,你會加入後'strict'編譯,是告訴你,你有一個範圍的問題之後,會顯示錯誤消息。 '$ fh'在錯誤的範圍內聲明。 –
好吧,我得到了問題。我在if塊中聲明瞭$ fh,所以它在while循環中不可用。由於卡萊 –