2016-06-24 3 views
1

ich so etwas wieunter Verwendung einer in der Variablen in einem Perl-Skript übergeben

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

tun wollen, wo perlScript.pl ein Datei-Handle wie

#!/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>; 
}; 

öffnen werde ich möchte nur ein paar Ratschläge, wie man Um auf diesen Brief zuzugreifen, komme ich aus dem Skript heraus. Auch wenn ich in der TXT-Datei als Parameter übergeben konnte und darauf zuzugreifen dann mag $ 1 oder etwas

Dankes-

Antwort

5

Sie können Befehlszeilenargumente übergeben Perl, werden sie @ARGV in der speziellen Anordnung zeigen.

Basis-Befehlszeilenargument

# In bash 
./perlScript.pl 123 

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

Viele Positionsbefehlszeilenargumente

# 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 

Viele Command Line Flags

# 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"); 
Passing

Umgebungsvariablen

# 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 - Details über @ARGV und %ENV

perldoc Getopt::Long

Verwandte Themen