4

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
4

2 に答える 2

5

$fd=\*DATA; トリックを行う必要があります

于 2013-05-06T08:00:35.143 に答える
1

DATAファイルのオープンに失敗した場合はautodie、プログラムを停止させるのではなく、デフォルトのハンドルを使用することをお勧めします。とにかく、それは よりも優れたテストです-f。このようなものはおそらく

my $fd = \*DATA;
if (@ARGV) {
  if (open $_, '<', $ARGV[0]) {
    $fd = $_;
  }
  else {
    warn qq{Unable to open "$ARGV[0]" for reading: $!};
  }
}
于 2013-05-06T08:34:38.460 に答える