gpt4 book ai didi

perl - 如何移植代码 perl switch-like 语句以用于 5.8

转载 作者:行者123 更新时间:2023-12-04 23:37:41 27 4
gpt4 key购买 nike

我有一段使用 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";
}
}
}
}
}

最佳答案

只需将 given/when 替换为 if/elsif 就够简单了。

for my $detail ( $Details1, $Details2 ) {

for ( keys %$detail ) {

if ( $_ eq 'file' ) {

print " File: $detail->{file}{path}\n";
print "Bytes: $detail->{file}{size}\n";
}

elsif ( $_ eq 'directory' ) {

if ( ref $result->{directory} eq 'ARRAY' ) {

for my $entry ( @{$detail->{directory}} ) {
print "Directory: $entry->{path}\n";
}
}

if ( ref $result->{directory} eq 'HASH' ) {
print "Directory: $detail->{directory}{path}\n";
}
}
}
}

但我很想将其重写为带有调度表的匿名订阅者。

关于perl - 如何移植代码 perl switch-like 语句以用于 5.8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7918633/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com