小编use*_*579的帖子

如何替换Perl中现有文件中的字符串?

我想在名为1_classification.dat,2_classification.dat等所有文本文件中将"blue"替换为"red".我想编辑同一个文件,所以我尝试了这个代码,但它不起作用.我哪里错了?

@files=glob("*_classification.dat");
foreach my $file (@files)
{
    open(IN,$file) or die $!;
    <IN>;
    while(<IN>)
    {
       $_='~s/blue/red/g';
       print IN $file;
    }

   close(IN)
}
Run Code Online (Sandbox Code Playgroud)

regex perl

50
推荐指数
3
解决办法
9万
查看次数

如何在perl中减去2个不同数组中的值?

嗨我有两个包含4列的数组,我想从array1的column1中的value和array1的column2的array2的column2的值中减去array2的column1中的值,所以on..example:

my @array1=(4.3,0.2,7,2.2,0.2,2.4)
my @array2=(2.2,0.6,5,2.1,1.3,3.2)
Run Code Online (Sandbox Code Playgroud)

所以要求的输出是

2.1 -0.4 2     # [4.3-2.2] [0.2-0.6] [7-5]
0.1 -1.1 -0.8  # [2.2-2.1] [0.2-1.3] [2.4-3.2]
Run Code Online (Sandbox Code Playgroud)

为此,我使用的代码是

my @diff = map {$array1[$_] - $array2[$_]} (0..2);          
print OUT join(' ', @diff), "\n";
Run Code Online (Sandbox Code Playgroud)

我现在得到的输出是

2.1 -0.4 2
2.2 -1.1 3.8
Run Code Online (Sandbox Code Playgroud)

第一行再次使用第一行而不是第二行,我该如何克服这个问题呢?

我需要输出3列的行,就像我上面显示的那样,所以我只用3个值的行填充了我的数组.

perl

5
推荐指数
2
解决办法
2875
查看次数

如何在不重复二级密钥的情况下打印出复杂的哈希值?

嗨,我有一个哈希哈希,包含班级名称,注册学生人数和学生姓名.
如何打印此哈希而不重复第二级键.
示例:我填写的哈希数据是Science Class,3名学生就读于George,Lisa,Mathias和Math Class,4名学生注册了Peter,George,Anna,Martin.

my %register=();

$register{$className}->{$count_students}=$student_name; # Fill the hash.

  foreach my $key ( keys %register ){      

   print "$key: ";

   foreach my $class ( keys %{ $register{$key} } ){

       print "$class=$register{$key}->{$class}\n";

   }  
}
Run Code Online (Sandbox Code Playgroud)

我得到的结果如下:

Science_class:2 = Lisa
1 = George
3 = Mathias
Math_class:2 = Anna
1 = Martin
3 = Peter
4 = George

但我希望我的结果如下:

Science_class:3 - > Lisa,George,Mathias
Math_class:4 - > Anna,Martin,Peter,George

如何更正我的脚本?帮帮我.

perl hash perl-data-structures

2
推荐指数
1
解决办法
407
查看次数

如何总结哈希的元素?

嗨我有一个哈希,其中键是一个3digit代码,值是该代码下的元素数.我想总结3digit代码并乘以元素数量,然后最后添加它们.例:

000 23
012 42
222 34

[(0+0+0)*23]+[(0+1+2)*42]+[(2+2+2)*34]=0+126+204=330
Run Code Online (Sandbox Code Playgroud)

所以我试过

foreach my $key (sort keys %hash ){      
@arrSum=split(//, $key);
   foreach $i (@arrSum){    
     $sum+=$i;
     $value=$sum*$hash{$key};
   }    
}
Run Code Online (Sandbox Code Playgroud)

这是行不通的.它实际上必须考虑每一行,而是一次性总结所有3digit代码.需要一些帮助.

perl data-structures

2
推荐指数
1
解决办法
5493
查看次数