我可以在glob运算符中使用Perl常量吗?

gri*_*lix 2 perl glob constants

我正在解析XML文件,例如:

while (<files/*.xml>) { ... }
Run Code Online (Sandbox Code Playgroud)

我想用常量来'文件'

use constant FILES_PATH => 'files';
while (<FILES_PATH/*.xml>) { ... }
Run Code Online (Sandbox Code Playgroud)

我希望你理解这个想法,并可以帮助我:) ..

先感谢您.

Cha*_*ens 6

嗯,这是使用Readonly而不是常量的一个原因.您可以使用常量&的开头或()结尾来获取Perl以实现它是子例程.让我检查一下.

不,但你可以使用创建arrayref的经典技巧来解除引用:

#!/usr/bin/perl

use strict;
use warnings;

use constant DIR => "/tmp";

print map { "$_\n" } <${[DIR]}[0]/*>;
Run Code Online (Sandbox Code Playgroud)

但既然glob "*"是一样的<*>,你可能会喜欢:

#!/usr/bin/perl

use strict;
use warnings;

use constant DIR => "/tmp";

print map { "$_\n" } glob DIR . "/*";
Run Code Online (Sandbox Code Playgroud)

我可能会说

#!/usr/bin/perl

use strict;
use warnings;

use Readonly;

Readonly my $DIR => "/tmp";

print map { "$_\n" } <$DIR/*>;
Run Code Online (Sandbox Code Playgroud)