Добрый день.
Как явно указать, что ключ хэша — число (переменная — число) ?
Пример:
my %table;
my $key = "11";
$table{$key} = "value";
my $key2 = 11;
$table{$key2} = "value";
нашел подобный пример в документации is_numeric, там используется strtol, но:
1. Будет ли это работать?
2. В версии под Win (v5.10.1) оно не работает с ошибкой "strtol is not defined in %posix::export_tags...":
use POSIX qw(:strtol);
my $tst = strtol( "1" );
Цель такая, из двух источников приходят ключи. Но с одного они идут в "произвольном" виде ("003", 3, "3"..), а со второго в виде чисел ( 1, 2, 3..).
Поэтому при помещении их в хэш, они интерпретируются как строки и "003" <> 3. Каковое поведение меня не устраивает.
Спасибо.
Привет.
Как уже писали
1
perl -e 'use Data::Dumper; $k1 = 1; $k2="003"; $h->{$k1} = 1; $h->{$k2+0} = 2; warn Dumper($h);'
$VAR1 = {
'1' => 1,
'3' => 2
};
2
perl -e 'use Data::Dumper; $k1 = 1; $k2="003"; $h->{$k1} = 1; $h->{int($k2)} = 2; warn Dumper($h);'
$VAR1 = {
'1' => 1,
'3' => 2
};
а еще был удивлен таким вариантом
perl -e 'use Data::Dumper; $k1 = 1; $k2='003'; $h->{$k1} = 1; $h->{$k2} = 2; warn Dumper($h);' $VAR1 = {
'1' => 1,
'3' => 2
};
Здравствуйте, CString, Вы писали:
CS>а еще был удивлен таким вариантом
CS>CS> perl -e 'use Data::Dumper; $k1 = 1; $k2='003'; $h->{$k1} = 1; $h->{$k2} = 2; warn Dumper($h);'
CS> $VAR1 = {
CS> '1' => 1,
CS> '3' => 2
CS> };
CS>
Одинарные кавычки внутри одинарных кавычек. Perl не при чём.