Perl jest słabo napisany i oparty na kontekście. Wiele skalarów można traktować zarówno jako łańcuchy, jak i liczby, w zależności od używanych operatorów.
$a = 7*6; $b = 7x6; print "$a $b\n";
Masz 42 777777
.
Jest jednak subtelna różnica. Kiedy odczytujesz dane liczbowe z pliku tekstowego do struktury danych, a następnie przeglądasz je za pomocą Data::Dumper
, zauważysz, że Twoje liczby są cytowane. Perl traktuje je wewnętrznie jako ciągi.
Czytaj: $my_hash{$1} = $2 if /(.+)=(.+)\n/;
.
Wysypisko:'foo' => '42'
Jeśli chcesz nienotowanych numery zrzutu:
Odczyt: $my_hash{$1} = $2+0 if /(.+)=(.+)\n/;
.
Wysypisko:'foo' => 42
Po tym, jak $2+0
Perl zauważy, że potraktowałeś 2 dolary jako liczbę, ponieważ użyłeś operatora numerycznego.
Zauważyłem to, próbując porównać dwa skróty z Data::Dumper
.