Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Perl中快速运行函数_Perl - Fatal编程技术网

在Perl中快速运行函数

在Perl中快速运行函数,perl,Perl,我有一个这样的函数 sub main { my $item; $send = item_id(); $send .= item_id2(); $send .= jobproccess(); send_idea($send) && send_idea($send) && send_idea($send); } 如您所见,它多次运行函数send_idea。 我怎样才能在一行中做到这一点 发送想法($send)x 4&& 有没有

我有一个这样的函数

sub main {
    my $item;
    $send = item_id();
    $send .= item_id2();
    $send .= jobproccess();
    send_idea($send) && send_idea($send) && send_idea($send);
}
如您所见,它多次运行函数send_idea。 我怎样才能在一行中做到这一点

发送想法($send)x 4&&


有没有任何可能的方法可以做到这一点。

您可以创建一个简单的循环

send_idea($send) for 1 .. 3;
哪个是脚本后版本的

for (1 .. 3) {
    send_idea($send);
}
但当然,这里有一个隐藏的动态。
&&
操作符不仅仅是将命令链接在一起。它检查子例程
send_idea()
的返回值,如果其中一个失败,其他的就不会执行。因此,如果您希望包含该功能,您需要

for (1 .. 3) {
    send_idea($send) or last;
}
这也可以写出来

send_idea($send) or last for 1 .. 3;
在您的问题中,您的语句与
&&
链接在一起,但实际上它应该是三个单独的语句,除非您希望包含此检查

send_idea($send);
send_idea($send);
send_idea($send);

您的标题提到“快速”,这与以代码中看起来不错的方式运行函数非常不同。如果速度是您想要的,那么在调用过程的这一端所做的任何事情对结果的影响都可以忽略不计。

您的代码不一定要多次运行“send\u idea”。仅当“send_idea”的返回值为非零时,才会执行此操作。这就是你想要的,还是不管返回值如何,只运行多次就可以了?@TLP展示了如何解决这个问题,无论你是指哪一个,所以你可能可以忽略我的评论。把它放在这里只是为了说明这是你应该考虑的事情。
| |最后一次去了哪里?:)@mpapec我将其更改为类似于
循环的另一个
,因为我意识到在使用括号时,不需要较高的
|
优先级。