你的代碼似乎假設您正在傳遞的文件句柄,而不是文件名。您需要打開文件併爲其分配文件句柄。
# This doesn't work as $input contains a file name
GetOptions('input=s' => \$input,'output=s' => \$output);
# This doesn't work for two reasons:
# 1/ $input is a file name, not a filehandle
# 2/ You've omitted the file input operator
while ($input) {
...
}
你想要更多的東西是這樣的:
# Get the file names
GetOptions('input=s' => \$input,'output=s' => \$output);
# Open filehandles
open my $in_fh, '<', $input or die "Can't open $input: $!";
open my $out_fh, '>', $output or die "Can't open $output: $!";
# Read the input file using a) the input filehandle and b) the file input operator
while (<$in_fh>) {
...
}
我也覺得可能是這裏的另一個問題。我不是Windows的專家,但我認爲你的文件名可能會被誤解。嘗試要麼扭轉在命令行上的斜線:
perl myprogram.pl -input C:/inputfilelocation -output C:/outputfilelocation
或反斜槓加倍:
perl myprogram.pl -input C:\\inputfilelocation -output C:\\outputfilelocation
或者是引用的論據:
perl myprogram.pl -input "C:\inputfilelocation" -output "C:\outputfilelocation"
礦去世,享年:打開我的$跳頻, '<',$輸入或死亡;有什麼建議麼? – rupes0610 2012-07-10 22:59:12
@ user1488984爲什麼它會死?在錯誤信息中包含錯誤:'...或者死亡$!'。 – TLP 2012-07-10 23:17:50
@TLP:它在關閉的文件句柄$ fh上寫着「readline():while(<$fh>){ – rupes0610 2012-07-10 23:47:35