#!/usr/bin/perl -w
foreach $arg (@ARGV) {
if ($arg eq "--version") {
print "$0: version 0.1\n";
exit(0);
} elsif ($arg =~ /-[0-9]+/) {
$n = $arg;
$n =~ s/-//g;
} elsif ($arg eq <){
print "in";
} else {
push @files, $arg;
}
}
如何检查$ arg是否等于&lt;从输入? 提前致谢。
答案 0 :(得分:3)
您正确使用了字符串--version
的引号。您也应该使用<
的引号。
请注意,您正在检查命令行参数,而不是输入。另请注意,在* nix系统上,如果您调用脚本
myscript.pl -12 < input
< input
部分由shell处理,不会出现在参数列表中。
另见Getopt::Long。
答案 1 :(得分:0)
foreach my $arg (@ARGV) {
if ($arg eq "--version") {
print "$0: version 0.1\n";
exit(0);
} elsif ($arg =~ /-[0-9]+/) {
$n = $arg;
$n =~ s/-//g;
} elsif ($arg eq "<"){
print "in";
} else {
push @files, $arg;
}
}
答案 2 :(得分:0)
如果在命令行中使用<
,则标准输入来自文件。
如果命令行中未使用<
(并且|
未用于指定来自另一个进程的输出流的输入),则标准输入来自终端。
您可以通过选中-t STDIN
if (-t STDIN) {
print "input is from terminal\n";
} else {
print "input is from a file/pipe\n";
}