Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在perl中没有提供文件名的情况下,如何使用_数据_;句柄_Perl - Fatal编程技术网

在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

正在寻找一种在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($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
的文件怎么办)