【问题标题】:Specify perl script to run on an earlier version of perl指定要在早期版本的 perl 上运行的 perl 脚本
【发布时间】:2017-12-14 09:18:21
【问题描述】:

我有一些装有 Perl 5.0(更新版本 1998)的旧生产计算机。 我使用 Activestate Perl 5.24.1 在我的办公室计算机上开发了一个脚本

当我尝试在旧版本(安装在 Windows XP 上)上运行时,它会丢弃几个警告,等等无法了解 USE Warnings;three parameter open 功能。

our关键字不能与use strict;一起使用

our %Config = (
        'SourcePath' => "",
        'TargetPath' => "",
        'Station'    => "",
        'Product'    => "",
        'LogLevel'   => 0
    );

当我尝试打印带有哈希变量的字符串时,它也会发出警告。 代码是:

print $fhw qq/  <FACTORY NAME="FLEX_ZALA" TESTER="$Config{'Station'}" FIXTURE="" USER="" LINE="" SHIFT="" \/>\n/;

Station 变量并不为人所知。

我不能在生产机器上开发,但也不能在我的办公室电脑上安装这个旧版本。

如何强制在兼容模式 5.0 下使用 perl 5.24.1 运行我的脚本?

我使用 Windows 7 X64 PC 办公。

谢谢。

UPD1: XP Perl 版本是:

Microsoft Windows XP [版本 5.1.2600] (C) 版权所有 1985-2001 微软公司。

C:\Documents and Settings\grprog1>perl -v

这是 perl,版本 5.003_07

版权所有 1987-1996,拉里·沃尔

    + suidperl security patch
    Win32 port Copyright (c) 1995-1996 Microsoft Corporation.
            All rights reserved.
    Developed by ActiveWare Internet Corp., http://www.ActiveWare.com

Perl for Win32 Build 316 - 1998 年 3 月 13 日 09:44:44 构建

Perl 只能根据艺术许可的条款进行复制 或 GNU 通用公共许可证,可以在 Perl 5.0 中找到 源码包。

UPD2:

C:\Documents and Settings\grprog1>perl -V Summary of my perl5 (patchlevel 1) configuration:   Platform:
    osname=MSWin32, osver=3.51, archname=i386-win32
    uname=''
    hint=recommended   Compiler:
    cc='cl', optimize=''
    cppflags=''
    ccflags =''
    ldflags =''
    stdchar='char', d_stdstdio=, usevfork=false
    voidflags=15, castflags=0, d_casti32=, d_castneg=
    intsize=4, alignbytes=4, usemymalloc=n, randbits=15   Libraries:
    so=dll
    libpth=
    libs=
    libc=   Dynamic Linking:
    dlsrc=dl_win32.xs, dlext=pll, d_dlsymun=
    cccdlflags='', ccdlflags='', lddlflags=''


Characteristics of this binary (from libperl):   Built under MSWin32   Compiled at Mar 13 1998 09:44:44   @INC:
    C:\Teradyne\GRNavigate\228x\lib\perl
    ..\lib\i386-win32
    ..\lib
    .

【问题讨论】:

  • 您需要找到一个较旧的二进制文件。你不能告诉 Perl 模拟一个旧版本。请在旧机器上运行perl -V 并准确告诉我们您那里有什么版本。那也是一个 ActivePerl,还是你手动编译的? ActivePerl 和 Strawberry 都只列出 Perls 低至 5.8 以供下载(尽管对于 ActivePerl,您需要有商业许可证才能获得旧版本)。
  • 1998 年 Perl 5.4 是最新的。您必须回到 1994 年才能发布 v5.0。你真的需要运行一个 23 岁的图像吗?
  • 谢谢。我要求perl -V 大写V,但它显示了更多信息。但这已经是有用的信息了。
  • 添加了 perl 版本以进行评论。是的,我需要使用这个版本,因为几乎有 15 位测试仪有这个版本,而且它是一个 ICT 测试仪部分。如果我更新 perl 版本,我不知道会发生什么。
  • cpan.org/ports/win32/Standard/x86 有一些旧版本。不过我看不到 5.003。但是有一些 5.004 和更新的东西。也许值得尝试一下。我还找到了lib.ru/PERL/Perl_for_Win32_FAQ_1.txt_with-big-pictures.html,它列出了一些东西,包括如何构建自己的。在这种情况下,您只需要源代码和构建工具。

标签: perl


【解决方案1】:

如果你绝对必须,没有办法,运行古老的 perl,你的脚本不能使用更现代的东西。

查看 perlbrew 以在您的开发/测试机器上拥有多个版本的 perl,这样您就可以使用一个命令在多个版本的 perl 上测试您的代码。

也许还有http://perldoc.perl.org/perl.html 可以查看旧版 perls 的文档。 它只能追溯到 5.8.8(~2005 年),但比在您的情况下使用 5.24 的文档更好。

【讨论】:

    【解决方案2】:

    如果我理解正确,您的计算机 A 的地址为 perl 5.003_7。因此,将该分布从计算机 A 复制到您要进行开发的计算机 B 是最直接的答案。

    你说测试人员也有这个版本的 Perl。因此,您的公司必须从 ActiveState 购买站点许可证或特定数量的许可证。你应该先调查一下。

    如果您遇到困难,请联系 ActiveState 寻求支持。他们可能会为您提供一个收费的。

    但是,您的公司面临的问题是操作依赖于古老的、不再受支持的软件来运行可能存在自身问题的程序。进入本世纪是个好主意。

    【讨论】:

    • 不幸的是,这些测试人员来自其他站点,并且工作了多年。因为它们比全新的更新系统便宜很多。我们还没有任何许可证。我们无法更改操作系统、PC 或测试软件,因为我们没有任何安装程序、更新这些的许可证...
    • 您不需要安装程序,而且您知道从哪里获得许可证。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    • 2018-03-31
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 2015-05-27
    相关资源
    最近更新 更多