嗨,我想使用Perl中的Getop :: Long实现命令行参数1和管道STDIN(通过单个单破折号'-')或文件名作为参数2。在perldoc中只提到了一点:“命令行上的破折号现在将是合法的选择,并且使用它会设置变量$ stdio”:(https://perldoc.perl.org/Getopt/Long.html)。但是,这远远超出了我的使用范围。我尝试了以下
#!/usr/bin/perl -w
use strict;
use Getopt::Long;
my ($se, $st);
GetOptions("se=s" => \$s, '' => \$st) or die "Usage: $0 -s <tab|space|comma>\n";
$st = <STDIN>;
print "$se\n$st\n";
但是$ st只返回第一行还是应该使用文件句柄?然后,如果没有单独的单破折号“-”,并且将文件名指定为arguments2怎么办?非常感谢,
答案 0 :(得分:2)
仅使用<>
(<ARGV>
的缩写)代替<STDIN>
。 ARGV
是一个特殊的句柄,如果@ARGV
为空,则从STDIN读取,如果不是,则从@ARGV
中指定的每个文件中读取。
GetOptions("se=s" => \my $se)
or die "Usage: $0 -s <tab|space|comma>\n";
my $st = <>;