标签: perl5.8

如何猜出特定脚本的最小perl版本?

我有一些脚本,有时我写的时候没有意识到use v1.2.3;它有用.所以他们中的一些可能正在使用更高版本的perl中的一些功能,其中一些可能就好了,比如perl 5.8.

现在我想把它变成某种顺序并use在有需要的地方添加适当的s,以便能够更好地睡觉.:-)

我该怎么办?有没有什么工具可以帮我做出有根据的猜测?

perl perl5.8

12
推荐指数
2
解决办法
226
查看次数

对于Perl 5.8与5.10和5.12的子程序中的代码延迟评估有什么区别?

在Perl 5.8下,这段代码的行为与在Perl 5.12下的行为不同:

my $badcode = sub { 1 / 0 };
print "Made it past the bad code.\n";
Run Code Online (Sandbox Code Playgroud)

当我在5.8下运行它时,即使我从未执行分区,我也会收到错误:

[brock@chase tmp]$ /usr/bin/perl -v  

This is perl, v5.8.8 built for i486-linux-gnu-thread-multi

[brock@chase tmp]$ /usr/bin/perl badcode.pl  
Illegal division by zero at badcode.pl line 1.

[brock@chase tmp]$ /usr/local/bin/perl -v  

This is perl 5, version 12, subversion 0 (v5.12.0) built for i686-linux  

[brock@chase tmp]$ /usr/local/bin/perl badcode.pl  
Made it past the bad code.

在perl 5.10.1下,它的行为与在5.12下的行为相同:

brock@laptop:/var/tmp$ perl -v

This is perl, v5.10.1 (*) built …

perl perl5.8

8
推荐指数
1
解决办法
273
查看次数

我可以确保在5.10+上编写的Perl代码将在5.8上运行吗?

Perl 5.10和5.12的一些新功能(例如"say")被定义为功能,您可以启用或禁止显式使用"功能"编译指示.但其他补充,如正则表达式的命名捕获组,是隐含的.

当我使用5.10+解释器编写Perl但希望它也能在5.8上运行时,我是否可以让Perl抱怨使用5.8中没有的东西?显然,最好在你打算运行的所有主要版本上测试你的代码,但让Perl自动警告我仍然很好.

perl perl5.10 perl5.8

7
推荐指数
1
解决办法
343
查看次数

您使用的是哪个版本的Perl?

根据CPAN上的Perl源代码页,5.8.9现在是14天,将是最后的5.8版本.5.10.0已超过一年,可能已准备好用于生产.

暂且不谈Perl 6的讨论,请问Perl人员在生产中测试,推出和使用的版本是什么?我们目前在Ubuntu(工作站)和Solaris(生产)平台上已经标准化了5.8.8,我想知道将5.8.9或更大的一步小到5.10.0的优点和缺点.

perl perl5.8

6
推荐指数
1
解决办法
889
查看次数

如何将结果存储到变量并在条件中检查结果?

我知道这是可能的,但我在语法上画了一个空白.你如何做有条件的类似以下的事情.5.8,所以没有开关选项:

while ( calculate_result() != 1 ) {
    my $result = calculate_result();
    print "Result is $result\n";
}
Run Code Online (Sandbox Code Playgroud)

和类似的东西:

while ( my $result = calculate_result() != 1 ) {
    print "Result is $result\n";
}
Run Code Online (Sandbox Code Playgroud)

perl perl5.8

6
推荐指数
1
解决办法
133
查看次数

匹配Perl正则表达式中的平衡括号

我有一个表达式,我需要拆分并存储在一个数组中:

aaa="bbb{ccc}ddd" { aa="bb,cc" { a="b", c="d" } }, aaa="bbb{}" { aa="b}b" }, aaa="bbb,ccc"
Run Code Online (Sandbox Code Playgroud)

一旦拆分并存储在数组中,它应该看起来像这样:

aaa="bbb{ccc}ddd" { aa="bb,cc" { a="b", c="d" } }
aaa="bbb{}" { aa="b}b" }
aaa="bbb,ccc"
Run Code Online (Sandbox Code Playgroud)

我使用Perl版本5.8,有人可以解决这个问题吗?

regex perl perl5.8

6
推荐指数
3
解决办法
5361
查看次数

所有perl版本都支持旧模块吗?

我在所有服务器上安装了Perl 5.8,并希望使用DBI和DBD :: Oracle模块来访问我们的数据库.我主要担心的是更新版本的perl DBI和DBD模块将停止使用5.8.然后我必须将每台服务器升级到最新的perl版本.

我的问题是perl本身成为更高版本,并且为他们开发的模块是否仍然可以向后兼容?"如果我创建文档说运行"cpan -i DBI",如果最新版本的DBI不能与5.8一起运行,那么"CPAN不会包含Perl的所有古老版本和补丁级别".

perl cpan dbi perl5.8

5
推荐指数
3
解决办法
1179
查看次数

静态本地调度表,在闭包内调用OO

我有一个调度表,我希望只初始化一次,并且只打算由一个函数使用.我希望将子程序之外的调度表移动到同一个匿名块中,但由于调度表使用闭包来调用传递给函数的对象的方法,因此在函数外部移动表会将其与访问对象分开.我对此调度表还有哪些其他选择?

我正在使用Perl 5.8,所以不幸的是我无法使用state变量.

sub foo {
  my ($self, $var) = @_;

  my %funcs = (
    a => sub { $self->_a() },
    b => sub { $self->_b() },
    ...
  );

  return $funcs{$var}->();
}
Run Code Online (Sandbox Code Playgroud)

perl perl5.8

5
推荐指数
1
解决办法
106
查看次数

仅返回Perl 5.8.8中的替换匹配(是:Perl"p"正则表达式修饰符等效)

我有一个脚本(源码)来解析svn info为Bash创建一个合适的字符串$PS1.不幸的是,这不适用于我正在使用的运行Perl 5.8.8的系统 - 它输出所有行而不是仅输出匹配.什么是Perl 5.8.8相当于以下?

__svn_ps1()
{
    local result=$(
        svn info 2>/dev/null | \
        perl -pe 's;^URL: .*?/((trunk)|(branches|tags)/([^/]*)).*;\2\4 ;p')
    if [ -n "$result" ]
    then
        printf "${1:- (%s)}" $result
    fi  
}
Run Code Online (Sandbox Code Playgroud)

Perl 5.10的输出只包含空格,括号,分支名称,标记名称或trunk最后括号之一.Perl 5.8.8(没有最终版本p)的输出包含此加上svn info输出的每个空格分隔部分的括号版本.

一个可能的解决方法涉及和命令grep '^URL: '之间的简单,但我希望避免这种情况,因为这将针对每个Bash提示执行.svnperl

regex perl perl5.8

4
推荐指数
2
解决办法
865
查看次数

如何端口代码perl switch-like语句用于5.8

我有这个使用perl 5.10的特殊代码(用于类似交换的操作),但是需要让它在5.8上运行.为5.8写这个是什么另一种方式?一种首选方式/技术?

for my $detail ($Details1, $Details2) {
    for (keys %$detail) {
        when ('file') {
            print " File: $detail->{file}{path}\n";
            print "Bytes: $detail->{file}{size}\n";
        }

        when ('directory') {
            given (ref $result->{directory}) {
                when ('ARRAY') {
                    for my $entry (@{$detail->{directory}}) {
                        print "Directory: $entry->{path}\n";
                    }
                }
                when ('HASH') {
                    print "Directory: $detail->{directory}{path}\n";
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

perl perl5.8

2
推荐指数
1
解决办法
170
查看次数

安装Perl 5.8.x或5.10.x会对我的代码在5.6.x中开发时的运行方式产生重大影响吗?

通过在Perl 5.6.1中开发代码但在Perl 5.8.x或5.10.x中运行代码会产生什么影响(如果有的话)?

我正在使用这些模块:

(For Linux)
HTTP::Request
HTTP::Response
LWP::UserAgent
Unicode::String
XML::DOM
DateTime::Format::DateManip
Run Code Online (Sandbox Code Playgroud)

(适用于Windows)

Unicode-String
XML-DOM
DateTime-Format-DateManip (Haven't installed this yet on Windows, still looking for package)
Run Code Online (Sandbox Code Playgroud)

perl perl5.10 perl5.8 perl5.6

1
推荐指数
1
解决办法
306
查看次数

如何在Perl 5.8中增加十六进制字符串?

我有一个大的十六进制数 - $num = 0x80000000作为一个字符串.我想增加它,但hex($num)由于整数溢出(出现负数),做不起作用.using bigint也不是一个选项,因为bigint只在perl 5.10及更高版本中实现,我有5.8.我怎么能用这个字符串?

perl hex perl5.8

-1
推荐指数
1
解决办法
957
查看次数

perl 5.8和5.10之间的差异

我正在编译一些与5.8和5.10之间差异有关的信息.有人可以指出主要的差异,或告诉我在哪里可以开始我的研究?

perl perl5.10 perl5.8

-3
推荐指数
1
解决办法
2468
查看次数

标签 统计

perl ×13

perl5.8 ×13

perl5.10 ×3

regex ×2

cpan ×1

dbi ×1

hex ×1

perl5.6 ×1