Perl检查输入,否则使用默认值

时间:2014-10-22 15:51:50

标签: regex perl

我希望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的库中,还是有正则表达式?

2 个答案:

答案 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';
}