我希望Perl检查命令行以查看是否有输入文件/参数。否则,在没有参数时使用默认文件:
#!/usr/bin/perl -w
open(INPUT, "<", "./list2") || die "Couldn't open list for reading: $!\n";
while (<INPUT>)
{
# print stuff;
}
close(INPUT);
我已经打开了默认文件(list2),但不知道如何检查输入。我正在考虑使用条件语句(如果 argument_exists 然后从命令行读取输入;否则打开 default_file )。这是存在于Perl的库中,还是有正则表达式?
答案 0 :(得分:4)
脚本的参数保存在@ARGV
中。因此,只需检查该数组是否包含任何值,并添加所需的逻辑。
您还可以使用@ARGV
来读取默认文件,如下所示:
#!/usr/bin/perl -w
use strict;
use warnings;
@ARGV = './list2' if ! @ARGV;
while (<>) {
# print stuff
}
答案 1 :(得分:0)
由于您正在尝试读取文件,因此检查命令行参数文件是否存在可能是有意义的。您还可以确保参数是文件,而不是套接字或您不期望的其他奇怪的东西。
my @temp_array = @ARGV; #make a copy of command line arguments
@ARGV = (); #we will re-build this list
foreach (@temp_array) { #check the validity of every argument
if (-e and -f) { #-e means the path exists, -f means it's a file
push @ARGV, $_; #add this back to the @ARV list
} else {
print "Path '$_' is invalid\n";
} #/else
} #/foreach
if (!@ARGV) {
push @ARGV, './list2';
}