Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Perl中用于Evalue替换的正则表达式_Regex_Perl - Fatal编程技术网

Regex Perl中用于Evalue替换的正则表达式

Regex Perl中用于Evalue替换的正则表达式,regex,perl,Regex,Perl,我试图实现的是将评估值1e-2转换为0.01。 my $cutoff = "1e-12"; if ($cutoff =~ m/^\de-{1}\d+?$/){ $cutoff = s/e-/*10^(-/; $cutoff .= ")"; } print "$cutoff\n"; 这是一个更大脚本的一部分,在use warnings下运行它总是让我在test.pl第4行第1行的替换中使用未初始化的值$。 有人在这里发现错误了吗?我似乎不能这样做 得到的警告是因为

我试图实现的是将评估值1e-2转换为0.01。

my $cutoff = "1e-12";

if ($cutoff =~ m/^\de-{1}\d+?$/){
      $cutoff = s/e-/*10^(-/;
      $cutoff .= ")";
}  

print "$cutoff\n";
这是一个更大脚本的一部分,在
use warnings下运行它总是让我
在test.pl第4行第1行的替换中使用未初始化的值$。


有人在这里发现错误了吗?我似乎不能这样做

得到的警告是因为在替换运算符前面使用了
=
而不是
=~
。你需要:

$cutoff =~ s/e-/*10^(-/;
但这不是这里唯一的问题。您还必须
eval
语句才能得到您想要的,这不仅是一个糟糕的设计,而且完全没有必要。Perl本机将
“1e-12”
之类的值视为数字,因此您根本不应该使用正则表达式来执行此操作。您只需格式化输出:

printf '%d',$val;

1e-2
转换为
.01
。如果您需要创建这样的很长的数字,请查看适当的模块。

您收到的警告是因为您在替换运算符前面使用了
=
,而不是
=~
。你需要:

$cutoff =~ s/e-/*10^(-/;
但这不是这里唯一的问题。您还必须
eval
语句才能得到您想要的,这不仅是一个糟糕的设计,而且完全没有必要。Perl本机将
“1e-12”
之类的值视为数字,因此您根本不应该使用正则表达式来执行此操作。您只需格式化输出:

printf '%d',$val;

1e-2
转换为
.01
。如果您需要创建这样的很长的数字,请查看适当的模块。

您收到的警告是因为您在替换运算符前面使用了
=
,而不是
=~
。你需要:

$cutoff =~ s/e-/*10^(-/;
但这不是这里唯一的问题。您还必须
eval
语句才能得到您想要的,这不仅是一个糟糕的设计,而且完全没有必要。Perl本机将
“1e-12”
之类的值视为数字,因此您根本不应该使用正则表达式来执行此操作。您只需格式化输出:

printf '%d',$val;

1e-2
转换为
.01
。如果您需要创建这样的很长的数字,请查看适当的模块。

您收到的警告是因为您在替换运算符前面使用了
=
,而不是
=~
。你需要:

$cutoff =~ s/e-/*10^(-/;
但这不是这里唯一的问题。您还必须
eval
语句才能得到您想要的,这不仅是一个糟糕的设计,而且完全没有必要。Perl本机将
“1e-12”
之类的值视为数字,因此您根本不应该使用正则表达式来执行此操作。您只需格式化输出:

printf '%d',$val;
1e-2
转换为
.01
。如果您需要创建这样的很长的数字,请查看适当的模块。

您是否意识到“1e-2”已经是Perl中数字的有效格式?您只需要说服Perl将其视为一个数字

$ perl -E'$x= "1e-2"; say $x'
1e-2
$ perl -E'$x= "1e-2"; $x+=0; say $x'
0.01
向其添加零可以确保Perl知道它是一个数字。

您是否意识到“1e-2”已经是Perl中数字的有效格式?您只需要说服Perl将其视为一个数字

$ perl -E'$x= "1e-2"; say $x'
1e-2
$ perl -E'$x= "1e-2"; $x+=0; say $x'
0.01
向其添加零可以确保Perl知道它是一个数字。

您是否意识到“1e-2”已经是Perl中数字的有效格式?您只需要说服Perl将其视为一个数字

$ perl -E'$x= "1e-2"; say $x'
1e-2
$ perl -E'$x= "1e-2"; $x+=0; say $x'
0.01
向其添加零可以确保Perl知道它是一个数字。

您是否意识到“1e-2”已经是Perl中数字的有效格式?您只需要说服Perl将其视为一个数字

$ perl -E'$x= "1e-2"; say $x'
1e-2
$ perl -E'$x= "1e-2"; $x+=0; say $x'
0.01

向它添加零可以确保Perl知道它是一个数字。

$cutoff=s/e-/*10^(-/;
应该是
$cutoff=~s/e-/*10^(-/;
)?谢谢@Biffen…这是个错误。注意:整个代码应该
$cutoff=~s/^(\d)e(-\d+)/$1*10^($2)/
。不要愚蠢地匹配m//,然后再匹配s//。@ikegami谢谢你的建议。下次会被采纳,但我已经用dan1111的方法解决了这个问题。
$cutoff=s/e-/*10^(-/;
应该是
$cutoff=~s/e-/*10吗^(/;
?谢谢@Biffen…那是个错误。注意:整个代码应该
$cutoff=~s/^(\d)e(-\d+)$/$1*10^($2)/;
。不要愚蠢地匹配m//,然后再匹配s//。@ikegami谢谢你的建议。下次会被采纳,但我已经用dan1111的方法解决了这个问题。是
$cutoff=s/e-/*10吗^(/;
应该是
$cutoff=~s/e-/*10^(-/;
?谢谢@Biffen…这是个错误。注意:整个代码应该
$cutoff=~s/^(\d)e(-\d+)$/$1*10^($2)/
。不要愚蠢地匹配m//,然后再匹配s//。@ikegami谢谢你的建议。下次会被采纳,但我已经用dan1111的方法解决了这个问题。
$cutoff=s/e-/*10^(-/;
应该是
$cutoff=~s/e-/*10吗^(/;
?谢谢@Biffen…这是个错误。注意:整个代码应该
$cutoff=~s/^(\d)e(-\d+)$/$1*10^($2)/
。不要愚蠢地匹配m//,然后再匹配s//。@ikegami谢谢你的建议。下次会被采纳,但我已经用dan1111的方法解决了这个问题。理想情况下,你应该概述一下我需要使用
$cutoff=sprintf('%df',$cutoff)
使用
d=any integer
以便在我的脚本中进一步使用它!尽管如此,我还是接受它作为正确答案。理想情况下,您应该概述我需要使用
$cutoff=sprintf('%df',$cutoff)
使用
d=any integer
以便在我的脚本中进一步使用它!尽管如此,我还是接受它作为正确答案。理想情况下,您应该概述我需要使用
$cutoff=sprintf('%df',$cutoff)
使用
d=any integer
以便在我的脚本中进一步使用它!尽管如此,我还是接受它作为正确答案。理想情况下,您应该已经概述了
$ perl -E'$x= "1e-2"; say $x'
1e-2
$ perl -E'$x= "1e-2"; $x+=0; say $x'
0.01