为什么当我调用我的函数两次时 glob 会失败?
Why does glob fail when I call my function twice?
我有以下代码:
#! /usr/bin/perl
use strict; use warnings;
use Data::Dumper;
sub test {
my $glob = glob("test?pl");
print "glob [$glob]\n";
$glob = glob("test?pl");
print "glob [$glob]\n";
}
test();
test();
当我 运行 它时,我得到以下输出:
glob [test.pl]
glob [test.pl]
Use of uninitialized value $glob in concatenation (.) or string at ./test.pl line 9.
glob []
Use of uninitialized value $glob in concatenation (.) or string at ./test.pl line 11.
glob []
为什么我第二次调用 test
函数时 glob
失败了?我正在使用 Perl 5.14。
来自glob
的documentation:
In scalar context, glob
iterates through such filename expansions, returning undef when the list is exhausted.
换句话说,当你调用glob
是在标量上下文中时,它returns先展开。第二次调用相同的 glob
实例 returns 第二次扩展,依此类推。当所有扩展都已返回时,glob
returns undef
表示这一点。
一次获取所有扩展:
my @expansions = glob($glob);
要获取所有扩展,一次一个:
while (defined( my $expansion = glob($glob) )) {
...
}
要获得第一个扩展并忽略其余部分:
my ($expansion) = glob($glob);
我有以下代码:
#! /usr/bin/perl
use strict; use warnings;
use Data::Dumper;
sub test {
my $glob = glob("test?pl");
print "glob [$glob]\n";
$glob = glob("test?pl");
print "glob [$glob]\n";
}
test();
test();
当我 运行 它时,我得到以下输出:
glob [test.pl]
glob [test.pl]
Use of uninitialized value $glob in concatenation (.) or string at ./test.pl line 9.
glob []
Use of uninitialized value $glob in concatenation (.) or string at ./test.pl line 11.
glob []
为什么我第二次调用 test
函数时 glob
失败了?我正在使用 Perl 5.14。
来自glob
的documentation:
In scalar context,
glob
iterates through such filename expansions, returning undef when the list is exhausted.
换句话说,当你调用glob
是在标量上下文中时,它returns先展开。第二次调用相同的 glob
实例 returns 第二次扩展,依此类推。当所有扩展都已返回时,glob
returns undef
表示这一点。
一次获取所有扩展:
my @expansions = glob($glob);
要获取所有扩展,一次一个:
while (defined( my $expansion = glob($glob) )) {
...
}
要获得第一个扩展并忽略其余部分:
my ($expansion) = glob($glob);