如果没有为perl脚本提供文件名,请查找使用DATA句柄的方法。
我对perl不太熟练。
类似的东西:
use strict;
use warnings;
use autodie;
use diagnostics;
my $fd;
if( $ARGV[0] && -f $ARGV[0] ) {
open $fd, "<", $ARGV[0];
} else {
$fd = "DATA"; #what here?
}
process($fd);
close($fd); #closing the file - or the DATA handle too?
sub process {
my $handle = shift;
while(<$handle>) {
chomp;
print $_,"\n";
}
}
__DATA__
default content
答案 0 :(得分:5)
$fd=\*DATA
;应该做的伎俩
答案 1 :(得分:1)
如果文件打开失败而不是让DATA
停止您的程序,您可能更喜欢默认使用autodie
句柄。无论如何,这是一个比-f
更好的测试。这样的事可能
my $fd = \*DATA;
if (@ARGV) {
if (open $_, '<', $ARGV[0]) {
$fd = $_;
}
else {
warn qq{Unable to open "$ARGV[0]" for reading: $!};
}
}