我的 Perl 脚本有问题。
我有一个文本文件作为输入
Hello -> good 0.1 0.2 0.3
Hello -> morning 1 2 0.6
脚本进行这样的划分:(输出)
Hello |||good ||| 0.1/0.2 0.2/0.3 2.718
Hello ||| morning ||| 1/2 2/0.6 2.718
这是我当前的脚本:
#!/usr/bin/perl
use strict;
use warnings;
use feature qw(:5.10);
my ($fichier1) = "fichier1.txt";
open my $FIC1, "<", $fichier1, or die "impossible ouvrir $fichier1 $! \n";
open(FICHIERNOUVELLES, ">resultat.txt");
while (my $line1 = <$FIC1>) {
chomp $line1;
my ($texte, $value1, $value2, $value3) = ($1, $2, $3, $4) if $line1 =~ /^([a-zA-ZÀÁÂÃÄÅÇÈÉÊËÌÍÎÏñœ=ÒÓÔÕÑÖæñßÙÚÛÜÝàáâãäåçèéêëìíîïðòóô-õöùúûüý@#-%&*_\s]+)([.\d]+)$/;
my $tot_val1 =sprintf("%.15f", $value1 * $value2);
my $tot_val2 =sprintf("%.15f", $value2 * $value3);
print "$texte $tot_val2\n";
print FICHIERNOUVELLES "$texte ($tot_val2)\n";
}
close FICHIERNOUVELLES;
close $FIC1;
我的脚本中有 2 个错误:
"Use of uninitialized value $texte in concatenation (.) or string at perl.pl line 18, line 1.
Use of uninitialized value $value2 in multiplication (*) at perl.pl line 14, line 2.
请问有什么想法吗? 非常感谢
最佳答案
问题:
您尝试检索捕获内容 4 次:
($1, $2, $3, $4)
但是您的正则表达式中只有 2 个捕获组。
捕获组是您在正则表达式的 ()
中放置的内容。
阅读 perldoc perlretut 是一个好的开始
关于perl - Perl 中的除法脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16387317/