有没有办法建立一个时间计数器,使脚本的部分运行只要它滴答?例如,我有以下代码:
for my $i (0 .. $QUOTA-1) {
build_dyna_file($i);
comp_simu_exe;
bin2txt2errormap($i);
}
Run Code Online (Sandbox Code Playgroud)
从理论上讲,我想运行这个循环3分钟,即使循环指令尚未完成,它仍应在3分钟后突破循环.
实际上程序会打开一个时间计数器窗口,它与脚本的一部分并行工作(每次调用它).
另外,子调用'comp_simu_exe'运行外部模拟器(在shell中),当超时结束时 - 此过程也必须被杀死(不要假设在一段时间后返回).
sub comp_simu_exe{
system("simulator --shell");
}
Run Code Online (Sandbox Code Playgroud)
系统函数调用之间是否有任何关联?
如何同时将输出打印到终端和文件?
$ perl foo.pl > foout.txt
Run Code Online (Sandbox Code Playgroud)
不允许我看到实时流程.
有没有什么方法可以实时看到输出过程并在文件的屏幕输出结束?
我正在寻找一种方法将信号连接转换为简单的方案或图形.
假设我有2个组件,它们周围有2个线路/信号:
component A:
input - S1
output - S2
component B:
input - S2
output - S1
Run Code Online (Sandbox Code Playgroud)
这将是输入数据文件,输出将是一个方案,将其显示为2个块,其周围有连接线或插图.
我想知道在Perl的世界中是否存在这种实现.
我想检查参数$PGkey是否等于哈希表中具有相同名称的键.此外,我希望尽可能接近这种格式:
while(<PARAdef>) {
my($PGkey, $PGval) = split /\s+=\s+/;
if($PGkey == $hash{$PGkey}) {
print PARAnew "$PGkey = $hash{$PGkey}->[$id]\n";
} else {
print PARAnew "$PGkey = $PGval\n";
}
}
Run Code Online (Sandbox Code Playgroud)
有一个简单的方法吗?
如何保留为第二个VAR添加哈希元素的顺序?
(散列哈希)
例如:
use Tie::IxHash;
my %hash;
tie %hash, "Tie::IxHash";
for my $num (0 .. 5){
$hash{"FirstVal$num"}++;
}
for my $num (0 .. 5){
$hash{"FirstValFIXED"}{"SecondVal$num"}++;
}
print Dumper(%hash);
Run Code Online (Sandbox Code Playgroud)
转储结果时,$ VAR14不保留插入顺序:
$VAR1 = 'FirstVal0';
$VAR2 = 1;
$VAR3 = 'FirstVal1';
$VAR4 = 1;
$VAR5 = 'FirstVal2';
$VAR6 = 1;
$VAR7 = 'FirstVal3';
$VAR8 = 1;
$VAR9 = 'FirstVal4';
$VAR10 = 1;
$VAR11 = 'FirstVal5';
$VAR12 = 1;
$VAR13 = 'FirstValFIXED';
$VAR14 = {
'SecondVal5' => 1,
'SecondVal4' => 1,
'SecondVal2' => …Run Code Online (Sandbox Code Playgroud) 我有两个大小相等的二进制文件,但不是值.我使用unpack如下,但结果很奇怪.
当我使用"大"二进制文件时,两个输出都显示部分结果:
一个二进制文件开始好坏 -
第二个二进制文件在开始时出错.
你认为哪里可能是弱点?
open(BIN_FILE1, "<bin_files/BINF1.bin") or die("Cannot open file for writing");
open(BIN_FILE2, "<bin_files/BINF2.bin") or die("Cannot open file for writing");
binmode(BIN_FILE1);
binmode(BIN_FILE2);
# N An unsigned long (32-bit) in "network" (big-endian) order.
my @values_tmp1 = unpack("N*", <BIN_FILE1>);
my @values_tmp2 = unpack("N*", <BIN_FILE2>);
close (BIN_FILE1);
close (BIN_FILE2);
my $tmp_bin1 = @values_tmp1;
my $tmp_bin2 = @values_tmp2;
print "\nBIN FILE1 LENGTH: ",$tmp_bin1,"\n";
print "\nBIN FILE2 LENGTH: ",$tmp_bin2,"\n";
Run Code Online (Sandbox Code Playgroud)
输出是:
BIN FILE1 LENGTH:1203
BIN FILE2 LENGTH:124
输入文件是:
-rw-rw-r-- 1 yodar yodar …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法将TEXT字符从4byte BINARY文件转换为数组或TEXT文件,
让我们说我的输入文件是:
00000000 2e 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 |................|
00000010 04 00 00 00 05 00 00 00 06 00 00 00 07 00 00 00 |................|
00000020 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000070 00 00 00 …Run Code Online (Sandbox Code Playgroud) 我有一个问题是要正确地编写和读取由名称(键)和值数组组成的CSV文件:
testarray.csv
foo1 ,0,0,0,0,1
foo2 ,1,0,0,0,1
foo3 ,3,4,5,6,7
.
.
.
Run Code Online (Sandbox Code Playgroud)
我需要表示该文件如下:
foo# 将是关键,以下五个数字将是它的数组.
进行该操作并将其召回以供使用(不是使用Dumper)的简单方法是什么?如何使用特定键的数组中的变量?
例如,
print $hsh{'foo1'}[4];
Run Code Online (Sandbox Code Playgroud) 我有一个包含以下内容的文件:
foo1 = 1
foo2 = 2
foo3 = 8
.
.
.
Run Code Online (Sandbox Code Playgroud)
我需要用一部分内存哈希值替换该文件中的值(1,2,8 ...),具有相同键的值(foo1 - > 33,foo2 - > 44,foo3 ......)如何使用"s ///"运算符更改它?如果有其他优雅的方式来进行,我会很高兴知道.
谢谢你的帮助,
Yohad.
我在理解子程序语法时遇到了困难.
使用以下代码:
sub build_dyne_file{
open(DYNAP, "+>$veri_dir/$dyna_para") or die $!;
for (keys %hash){
print DYNAP "#define ",$_," ",$hash{$_}->[$i],"\n";
}
close(DYNAP);
}
for (my $i = 0 ; $i <$TEST_QUOTA ; $i++){
build_dyna_file($i);
}
Run Code Online (Sandbox Code Playgroud)
在'build dyne file'子例程中,'for循环'遍历散列键,而$ i参数在外部'for循环'中使用.
我希望你理解这个问题,如果没有 - 我会试着更恰当地解释它.
谢谢你的回答.