【问题标题】:Execute a perl script which doesnt have the .pl extension from another perl script which have the .pl extension从另一个具有 .pl 扩展名的 perl 脚本执行一个没有 .pl 扩展名的 perl 脚本
【发布时间】:2019-06-12 07:08:54
【问题描述】:

如何在 Windows 上从另一个名为 second.pl 的 perl 脚本执行一个名为“first”(无扩展名)的文件的 perl 脚本?

第一个文件内容:

#!/usr/bin/perl5.8.4 -w
>> Some code

second.pl 的文件内容:

#!/usr/bin/perl
use strict;
use warnings;

system "first";

所以我的问题是当我从 Windows 命令行“首先”执行文件时,它可以工作

但如果我尝试从我的文件“second.pl”运行它,使用system "first"; 它失败并出现以下错误:

can't exec "first" : Not a directory at "second.pl" at line 6

【问题讨论】:

  • system 'open first' 呢?
  • 或者system '/path/to/perl /path/to/first'

标签: perl


【解决方案1】:

Windows 使用文件扩展名来确定如何运行文件。由于您没有扩展,操作系统认为您正在尝试打开一个目录。

您可以通过将system "first"; 更改为来解决此问题

system $^X, "first"

这将使 Windows 再次运行当前的 Perl 解释器,将您的脚本名称作为第一个参数传递,从而让 Perl 运行它。

【讨论】:

  • 防御性编程建议:很容易安装多个 Perls,有时在不知情的情况下,system "perl" 可能无法运行您期望的那个。使用$^X(与当前运行的 Perl 相同)或硬编码完整路径。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-25
  • 1970-01-01
  • 1970-01-01
  • 2010-12-15
  • 1970-01-01
  • 2016-04-07
  • 2016-05-05
相关资源
最近更新 更多