如果我向 ARGV 传递两组值,它如何在 Perl 中进行处理?
How does ARGV get processed in Perl if I pass two sets of values to it?
如果我使用 ./test.pl file1 file2
,我知道这些值存储在 @ARGV
中作为第一个和第二个值,这样 $ARGV[0]
等于 file 1
等等。
但是,如果我将命令作为 ./test.pl ./folder1/* ./folder2/*
传递,其中每个文件夹都有 1000 个编号的文件,@ARGV
是如何编号的?
我进行了编辑以更正相关错误。 $ARGV[1] 应该是 file2,而不是答案和评论中指出的 file1。
ARGV[0]
是 first value
,因此 $ARGV[0]
是 ./folder1/0001
,$ARGV[1]
是 ./folder1/0002
,依此类推。 $ARGV[1000]
将是 ./folder2/1001
(假设您的文件被命名为 0001
到 1001
)
use strict;
use warnings;
use utf8;
use Data::Dumper;
print Dumper @ARGV;
示例 1
./example.pl file1 file2
输出是
$VAR1 = 'file1';
$VAR2 = 'file2';
示例 2
./example.pl folder1/* folder2/*
输出是
$VAR1 = 'folder1/file1';
$VAR2 = 'folder1/file2';
$VAR3 = 'folder1/file3';
$VAR4 = 'folder1/file4';
$VAR5 = 'folder1/file5';
$VAR6 = 'folder2/file1';
$VAR7 = 'folder2/file2';
....
如果我使用 ./test.pl file1 file2
,我知道这些值存储在 @ARGV
中作为第一个和第二个值,这样 $ARGV[0]
等于 file 1
等等。
但是,如果我将命令作为 ./test.pl ./folder1/* ./folder2/*
传递,其中每个文件夹都有 1000 个编号的文件,@ARGV
是如何编号的?
我进行了编辑以更正相关错误。 $ARGV[1] 应该是 file2,而不是答案和评论中指出的 file1。
ARGV[0]
是 first value
,因此 $ARGV[0]
是 ./folder1/0001
,$ARGV[1]
是 ./folder1/0002
,依此类推。 $ARGV[1000]
将是 ./folder2/1001
(假设您的文件被命名为 0001
到 1001
)
use strict;
use warnings;
use utf8;
use Data::Dumper;
print Dumper @ARGV;
示例 1
./example.pl file1 file2
输出是
$VAR1 = 'file1';
$VAR2 = 'file2';
示例 2
./example.pl folder1/* folder2/*
输出是
$VAR1 = 'folder1/file1';
$VAR2 = 'folder1/file2';
$VAR3 = 'folder1/file3';
$VAR4 = 'folder1/file4';
$VAR5 = 'folder1/file5';
$VAR6 = 'folder2/file1';
$VAR7 = 'folder2/file2';
....