Преобразование типов данных

Что будет, если к числу прибавить строку? Например:
$Str = "5"; # Строка $Number =3; # Число
$Str2 = $Number + $Str; # Переменная содержит число 8 $Str3 = $Str + $Number; # Переменная содержит число 8
Результат будет абсолютно другим, нежели в JavaScript, оператор + в Perl не используется для конкатенации строк. В этом случае интерпретатор попыта¬ется преобразовать переменные к одному типу данных, а затем выполнить операцию. В нашем случае переменная $str, тип строка, будет преобразована к числовому типу, а затем будет произведена операция сложения двух чисел.
Но что будет, если строку невозможно преобразовать в число? Скажем:
$Str = "Привет"; # Строка $Number =3; # Число
$Str2 = $Number + $Str; # Переменная содержит число 3 $Str3 = $Str + $Number; # Переменная содержит число 3
А что будет, если из числа вычесть строку, число умножить на строку или число разделить на строку? Рассмотрим примеры:
$Number = 15;
$Str = "5";
$Str2 = $Number — $Str; # Переменная содержит число 10 $Str3 = $Number * $Str; # Переменная содержит число 75 $Str4 = $Number / $Str; # Переменная содержит число 3
Итак, интерпретатор попытается преобразовать строку в число, а затем вы¬числить выражение. Причем не важно, в какой последовательности будут указаны число и строка:
$Str5 = $Str * $Number; # Переменная все равно содержит число 75 Но что будет, если в строке будут одни буквы? Возьмем:
$Number = 15;
$Str = "Строка";
$Str2 = $Number — $Str; # Переменная содержит число 15
$Str3 = $Str — $Number; # Переменная содержит число -15
$Str4 = $Number * $Str; # Переменная содержит число 0
$Str5 = $Str * $Number; # Переменная содержит число 0 $Str6 = $Number / $Str; # Ошибка деления на О
$Str7 = $Str / $Number; # Переменная содержит число О
С одной стороны, хорошо, что интерпретатор делает преобразование типов данных за нас. Но можно получить результат, который вовсе не планировал¬ся. По этой причине лучше оперировать переменными одного типа.



Web сайты на Perl и MySql