【发布时间】:2019-05-28 20:07:06
【问题描述】:
我正在尝试执行 perl 脚本来删除目录中的 file1.txt。
当我使用命令提示符执行 perl 脚本时,我遇到了一个错误:Use of uninitialized value in chdir at C:/Debug/test.pl line 7。
示例:
C:\Debug>test.pl C:\Debug
但是,如果我在test.pl 前面调用perl,则perl 脚本会成功执行并且file1.txt 会被删除。
示例:
C:\Debug>perl test.pl C:\Debug
请找到test.pl代码如下:
use strict;
use warnings;
use File::Copy;
my ($working_dir) = @ARGV;
chdir $working_dir or die "Can't change directory$!";
unlink "file1.txt";
我已经安装了带有 perl.exe 的 mks_toolkit v8.7.5。 .pl 扩展与"C:\Program Files (x86)\MKS Toolkit\mksnt\perl.exe" "%1" %* 相关联。
我没有在前面调用 perl 的情况下执行 hello.pl (Hello World) 没有问题。
示例:
C:\Debug>hello.pl
【问题讨论】:
-
嗨。如果在
my ($working_dir) = @ARGV;上方添加print "@ARGV\n"并双向运行脚本会得到什么? -
你好,我得到
Use of uninitialized value in chdir at C:/Debug/test.pl line 7错误w/o调用perl和C:\Debug如果调用perl输出。 -
奇怪,所以当您在命令行中调用没有
perl的脚本时,脚本后面的参数不会传递给脚本。这看起来像是 Windows 如何启动 Perl 解释器的问题,而不是 Perl 本身的问题。 -
我试过 ActivePerl,我也有同样的错误。在我对 .pl 文件属性做了一些小的调整并用 Perl 解释器打开它之后,唯一有效的 Perl 是 Strawberry Perl。
-
正如我所说的奇怪,请尝试在特定论坛上询问您正在使用的 Perl 版本。