Нередко параметр передается несколько раз.Имеет ли perl внутреннюю функцию, чтобы unquote переменной?
Вот интересный пример потери котировки на самом деле может помочь.
Первый абс() возвращает переменную без цитаты, в результате чего вторая абс возвращает правильное значение.
Мой вопрос:
ли Perl внутреннюю функцию Unquote переменную так, что я не должен закодировать таким образом? Информация
#!/usr/bin/perl -w
use strict;
my @nums = (
'-0',
'-0.0',
"-0.000",
qw(-0.000),
sprintf("%.4f", "-0.0"),
);
print "***use single abs()\n";
foreach my $num(@nums){
my $number = $num;
my $abs = abs($number);
print "<$num> abs <$abs>\n";
}
print "\n***use abs(abs())\n";
foreach my $num(@nums){
my $abs_abs = abs(abs($num));
print "<$num> double abs <$abs_abs>\n";
}
система:
uname -r
2.6.32-573.12.1.el6.centos.plus.x86_64
This is perl, v5.10.1 (*) built for x86_64-linux-thread-multi
Выходной экран:
***use single abs()
<-0> abs <0>
<-0.0> abs <-0>
<-0.000> abs <-0>
<-0.000> abs <-0>
<-0.0000> abs <-0>
***use abs(abs())
<-0> double abs <0>
<-0.0> double abs <0>
<-0.000> double abs <0>
<-0.000> double abs <0>
<-0.0000> double abs <0>
что делать, если вы сделали 'abs ($ num + 0)'? – Hambone
@ Хамбоне, это трюк! Думаю, мне нужно изменить коды, которые я написал, с двойным абс. – Gang
Я не могу себе представить, почему это было бы проблемой. Отрицательный ноль - это то же число, что и положительный ноль. Вы пытались с любыми ненулевыми цифрами? (BTW, я не могу воспроизвести это на perl 5.22.1) – trentcl