arrays - Perl 数组循环
问题描述
我有一个数组,我想在其中检查以下检查中的元素是否返回某个值,如果匹配条件则将其从数组中删除。继续循环槽数组,直到所有元素都消失。
foreach $temp (@inputs);
{
my $check = &checkStatus($temp, $server);
if ($check ne "Z");
print "$temp failed!\n";
}
解决方案
如果您有办法等待任何项目的状态发生变化,那将是最好的。
例如,如果您正在处理流程,则可以使用。
my %children = map { $_ => 1 } @pids;
while (%children) {
my $pid = wait();
my $status = $?;
delete($children{$pid});
if ( $status & 0x7F ) { warn("Child $pid killed by signal ".( $status & 0x7F )."\n"); }
elsif ( $status >> 8 ) { warn("Child $pid exited with error ".( $status >> 8 )."\n"); }
else { print("Child $pid exited successfully\n"); }
}
否则,您将需要投票。
use Time::HiRes qw( sleep ); # Time::HiRes::sleep supports fractional durations.
my %foos = map { $_ => 1 } @foo_ids;
while (%foos) {
for my $foo_id (keys(%foos)) {
if (checkStatus($foo_id, $server) eq 'Z') {
delete($foos{$foo_id});
# ...?
}
}
sleep(0.1); # To avoid using 100% CPU.
}
请注意,在这两种情况下,您都可以使用散列元素的值来包含有关事物的信息。
# When creating the foos.
$foos{$foo_id} = $foo;
# When waiting the foos.
my $foo = delete($foos{$foo_id});
推荐阅读
- windows - PowerShell - 调用在另一个函数中创建的函数
- reactjs - 未找到模块:无法在反应时解析“@chec/commerce.js”
- html - 响应式世界时间好友小部件
- python - 如果最佳做法是拥有那条线,为什么 flake8 会在空端线上显示警告?
- reactjs - 如何在 OnChange 中传递两个参数?
- python - 从 mplfinance 重新绘制烛台_ohlc 的最有效方法
- javascript - Angular 12 构建问题 - 致命错误:接近堆限制的无效标记压缩分配失败 - JavaScript 堆内存不足
- reinforcement-learning - 在 Dict 观察空间中运行 StableBaselines3
- javascript - MongoDB 聚合有两个模型
- android-studio - 如何在 Kotlin 中每次单击浮动操作按钮时重用我的代码?