【问题标题】:Using a passed in variable in a perl script在 perl 脚本中使用传入的变量
【发布时间】:2016-06-24 00:37:48
【问题描述】:

我想做类似的事情

for i in (1..100)
do
     ./perlScript.pl
done

perlScript.pl 将在哪里打开文件句柄,如

#!/usr/bin/perl -w
use strict;
my $file = 'info${i}.txt';
my @lines = do {
    open my $fh, '<', $file or die "Can't open $file -- $!";
    <$fh>;
};

我想要一些建议,即如何从脚本内部访问该字母 I。即使我可以将 txt 文件作为参数传递,然后像 $1 或其他东西一样访问它

谢谢

【问题讨论】:

    标签: perl file-handling


    【解决方案1】:

    您可以将命令行参数传递给 perl,它们将显示在特殊数组 @ARGV 中。

    基本的命令行参数传递

    # In bash
    ./perlScript.pl 123
    
    # In perl
    my ($num) = $ARGV[0];  # The first command-line parameter [ 123 ]
    

    许多位置命令行参数

    # In bash
    ./perlScript.pl 123 456 789 foo bar
    
    # In perl
    my ($n1,$n2,$n3,$str1,$str2) = @ARGV;  # First 5 command line arguments will be captured into variables
    

    许多命令行标志

    # In bash
    ./perlScript.pl --min=123 --mid=456 --max=789 --infile=foo --outfile=bar
    
    # In perl
    use Getopt::Long;
    
    my ($min,$mid,$max,$infile,$outfile,$verbose);
    GetOptions(
        "min=i"     => \$min,     # numeric
        "mid=i"     => \$mid,     # numeric
        "max=i"     => \$mix,     # numeric
        "infile=s"  => \$infile,  # string
        "outfile=s" => \$outfile, # string
        "verbose"   => \$verbose, # flag
    ) or die("Error in command line arguments\n");
    

    环境变量

    # In bash
    FOO=123 BAR=456 ./perlScript.pl 789
    
    # In perl
    my ($foo) = $ENV{ FOO } || 0;
    my ($bar) = $ENV{ BAR } || 0;
    
    my ($baz) = $ARGV[0]    || 0;
    

    perldoc perlvar - 有关@ARGV%ENV 的详细信息

    perldoc Getopt::Long

    【讨论】:

      猜你喜欢
      • 2011-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-26
      • 1970-01-01
      • 1970-01-01
      • 2012-10-15
      • 1970-01-01
      相关资源
      最近更新 更多