我在Perl中遇到了一些问题.基本上,我做这样的事情:
sub myFunction
{
return (&myOtherFnA(),&myOtherFnB(),&myOtherFnC());
}
sub myOtherFnA() {return 'A';}
sub myOtherFnB() {return undef;}
sub myOtherFnC() {return 'C';}
Run Code Online (Sandbox Code Playgroud)
我的问题是:当myOtherFnB()返回undef时,我想要一个将undef作为第二个元素的列表.但是当myOtherFnB()这样做时,我只得到一个包含2个元素的列表,myOtherFnA()和myOtherFnC()的元素.我明白了:
( 'A', 'C')
但我想得到:
('A',undef,'C')
我需要使用什么语法来阻止Perl从列表中删除myOtherFnB()的返回,如果它是undef并且实际上只是将一个undef元素放入列表中?
我不知道是什么让你认为你没有进入undef名单.但是,您的代码存在许多问题
&定义子例程时不要使用&符号- 这是语法错误
调用子程序时不要使用&符号.自二十多年前的Perl 4以来,这一点没有必要
不要使用原型(定义中子程序名后面的括号),因为它们没有按照你的想法行事,它们的意思是非常专业的
不要在本地标识符中使用大写字母:它们保留用于包名称等全局标识符
重写代码可以修复语法错误并纠正上述问题.如您所见,返回列表的第二个元素是undef
use strict;
use warnings;
sub my_function {
return (
my_other_function_a(),
my_other_function_b(),
my_other_function_c()
);
}
sub my_other_function_a {
return 'A';
}
sub my_other_function_b {
return undef;
}
sub my_other_function_c {
return 'C';
}
use Data::Dump;
dd [ my_function ];
Run Code Online (Sandbox Code Playgroud)
产量
["A", undef, "C"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |