今天在写Perl脚本的时候,碰到一个语句:

system (“copy /y $XMLInputFile  $UpdatedXMLFile”) == 0 or die “$!\n”;

刚开始没注意,在Cygwin下死活执行不了,提示错误说:

$ perl IntruShieldSigUpdate_v1.pl input.txt
No such file or directory

后来想到了,可能copy只是Windows才有的命令,于是切换到Windows Command Line下,终于可以顺利运行了。

System调用的系统命令,与你在哪个Shell里跑有很大的关系。在Cygwin下,就只能用Cygwin能识别的命令;在Windows Command Line里,就只能用Windows Shell能识别的命令。

如果要方便移植的话,还是推荐多用一用cpan的包,比如这里就应该用File::copy来实现拷贝和移动文件的功能。不过,如果使用你脚本的人,没有安装这个File::copy包,也会碰到一系列的问题。