Зависит от того, что Вы хотите сделать. Если Вы хотите использовать эти два аргумента в качестве входных файлов, можно просто передать их в и затем использовать <>
для чтения их содержания.
, Если у них есть другое значение, можно использовать GetOpt::Std
и GetOpt::Long
для обработки их легко. GetOpt::Std
поддержки только односимвольные переключатели и GetOpt::Long
намного более гибко. От [1 112] GetOpt::Long
:
use Getopt::Long;
my $data = "file.dat";
my $length = 24;
my $verbose;
$result = GetOptions ("length=i" => \$length, # numeric
"file=s" => \$data, # string
"verbose" => \$verbose); # flag
, С другой стороны @ARGV
специальная переменная, которая содержит все параметры командной строки. $ARGV[0]
является первым (т.е. "string1"
в Вашем случае), и $ARGV[1]
второй аргумент. Вам не нужен специальный модуль к доступу @ARGV
.
foreach my $arg (@ARGV) {
print $arg, "\n";
}
распечатает каждый аргумент.
Вы передаете их в том, точно так же, как Вы думаете, и в Вашем сценарии, Вы получаете их от массива @ARGV
. Как так:
my $numArgs = $#ARGV + 1;
print "thanks, you gave me $numArgs command-line arguments.\n";
foreach my $argnum (0 .. $#ARGV) {
print "$ARGV[$argnum]\n";
}
От здесь .
Если аргументами являются имена файлов, которые будут считаны из, используйте ромб (<>) оператор для достигания их содержания:
while (my $line = <>) {
process_line($line);
}
, Если аргументами являются опции/переключатели, используйте GetOpt:: Станд. или GetOpt:: Долго, как уже показано slavy13.myopenid.com.
На всякий случай, что они - что-то еще, можно получить доступ к ним или путем обхода через @ARGV явно или с эти shift
команда:
while (my $arg = shift) {
print "Found argument $arg\n";
}
(Отмечают, что выполнение этого с shift
будет только работать, если Вы будете за пределами всего sub
с. В sub
, это получит список аргументов, переданных sub
, а не переданные программе.)
Если Вы просто хотите некоторые значения, можно просто использовать массив @ARGV. Но если Вы ищете что-то более мощное, чтобы сделать некоторую обработку параметров командной строки, необходимо использовать Getopt:: Долго .