【发布时间】:2014-05-15 19:14:17
【问题描述】:
我正在这样做:
sub worker {
my ($job, @action) = @$_; #<-- error thrown here
Build($job, @action[0]);
}
for (1..NUM_WORKERS) {
async {
while (defined(my $job = $q->dequeue())) {
worker($job);
}
};
}
$q->enqueue([$_, 'clean']) for @compsCopy;
# When you're done adding to the queue.
$q->end();
$_->join() for threads->list();
当它执行时,我得到:
线程 8 异常终止:不能使用字符串(“8”)作为 ARRAY 引用,而“严格引用”正在使用(@上面引用的行)
我在这里做错了什么?
编辑:为了更深入地了解我想要完成的工作,我希望能够执行以下操作:
$q->enqueue([$_, 'clean']) for @compsCopy; #clean
$q->enqueue([$_, 'l1']) for @compsCopy; #build
$q->enqueue([$_, '']) for @compsCopy; #link
用户可以在哪里指定他们何时运行脚本,$actions 他们希望在组件(目录)上执行。
【问题讨论】:
-
关闭 use strict 是否有效
-
@Jeef 关闭
strict是一个可怕的想法。如果strict不能正常工作,你应该修复代码,而不是关闭strict。 -
为什么参数后面是作业类型。你写
("Hello, World!")print; -
为什么你有两个不同的东西命名为
$job?
标签: perl parameters