在perl中没有提供文件名的情况下,如何使用_数据_;句柄
正在寻找一种在perl脚本没有提供文件名时使用数据句柄的方法 我对perl不是很熟练 比如:在perl中没有提供文件名的情况下,如何使用_数据_;句柄,perl,Perl,正在寻找一种在perl脚本没有提供文件名时使用数据句柄的方法 我对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($f
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
使用严格;
使用警告;
使用自动模具;
使用诊断;
我的$fd;
如果($ARGV[0]&&f$ARGV[0]){
打开$fd,“$fd=\*数据
;应该可以做到这一点如果文件打开失败,您可能更愿意默认使用数据
句柄,而不是让自动死亡
停止您的程序。无论如何,这是一个比-f
更好的测试。可能是这样的
my $fd = \*DATA;
if (@ARGV) {
if (open $_, '<', $ARGV[0]) {
$fd = $_;
}
else {
warn qq{Unable to open "$ARGV[0]" for reading: $!};
}
}
my$fd=\*数据;
如果(@ARGV){
if(打开$"),应该是if(@ARGV&&-f$ARGV[0]){…
或if(定义为$ARGV[0]&&f$ARGV[0]){…
(如果有人给你一个名为0
的文件怎么办)