【问题标题】:Unable to execute perl script in cmd without invoking perl.exe在不调用 perl.exe 的情况下无法在 cmd 中执行 perl 脚本
【发布时间】: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 版本。

标签: perl cmd


【解决方案1】:

无论如何,遇到此问题的用户可以尝试检查文件的属性,确保该文件不是只读文件并且具有完全的管理员访问权限。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-03
    • 2015-04-06
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 2020-08-11
    相关资源
    最近更新 更多