Forum Webscript.Ru
Программирование => Perl => Тема начата: Alone от 13 Июня 2003, 12:50:30
-
допустим мне нужно выделить из переменной $a цуфру а потом из $b другую
делаю например так:
$a="a:12:b";
$a=~/^a:(\\d+):b$/;
print "n1=$1";
# выводит n1=12 (все нормально)
$b="a:15:b";
$b=~/^a(\\d+):b$/; # создаю ситуацию не нахождения
print "n2=$1";
# выводит n2=12 (т.е. выводит предыдущюю $1)
Конечно можно делать так $b=~/.?/;
или так @c=$b=~/^a(\\d+):b$/; и ссылатся не на $1 а на $c[0]
Но вот интересно есть ли какие-нибуть другие способы?
P.S. И вот что интересно
$a="a:12:b";
$a=~/^a:(\\d+):b$/;
print "n1=$1";
# выводит n1=12
$b="a:15:b";
$b=~//;
print "n2=$1";
# выводит n2=15
-
Alone:
Но вот интересно есть ли какие-нибуть другие способы?
Используй проверку успешности совпадения:
$a="a:12:b";
if ($a=~/^a:(\\d+):b$/)
{ print "n1=$1" }
# выводит n1=12 (все нормально)
$b="a:15:b";
if ($b=~/^a(\\d+):b$/) # создаю ситуацию не нахождения
{ print "n2=$1" } # в данном случае ничего не выведется
Alone:
P.S. И вот что интересно
$a="a:12:b";
$a=~/^a:(\\d+):b$/;
print "n1=$1";
# выводит n1=12
$b="a:15:b";
$b=~//;
print "n2=$1";
# выводит n2=15
При использовании пустого выражения в m// используется последнее успешно совпавшее.