在Windows上使Perl像Linux一样工作(通配符param扩展)

时间:2011-09-14 14:25:56

标签: windows perl

对于包含文件名的通配符,Windows上的Perl脚本就像在Linux上一样工作会很好。

例如:

perl myscript.pl *.txt

在Linux上,bash会将* .txt扩展为一组文件名,并将它们作为单独的参数传递给perl解释器。在Windows上,* .txt直接传递给Perl。

所以,基本上,我正在寻找的东西放在脚本的顶部,将扩展通配符参数,以便脚本的其余部分可以与Linux上相同。

例如:

myscript.pl

use warnings;
use strict;

# Mystery code to expand all wildcard params, fudging ARGV in the process
# ----
<Insert code here>
# ----

# Rest of script
...

4 个答案:

答案 0 :(得分:12)

  1. 如果您的Perl没有附带,请安装Win32::Autoglob
  2. PERL5OPT环境变量设置为-MWin32::Autoglobuse Win32::Autoglob

答案 1 :(得分:4)

操作系统的shell之间存在很大差异,这使得这一点不那么明显:在大多数Unix shell中,globbing(通配符扩展)由shell完成,在Windows上则不是这样。

这意味着由Unix shell启动的应用程序将在argv中看到一长串文件名,而在Windows下启动的相同应用程序将获得嵌入通配符的1个模式。

通过Cygwin在bash中启动脚本可能是最干净的选择。您还可以检测Windows(How can I tell if my Perl script is running under Windows?)和glob in Perl

答案 2 :(得分:2)

简单回答:

my @args = glob "@ARGV";

答案 3 :(得分:1)