Forum Webscript.Ru

Программирование => Perl => Тема начата: Alone от 13 Июня 2003, 12:50:30

Название: Удаление нумерованных переменных
Отправлено: 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
Название: Удаление нумерованных переменных
Отправлено: mike от 13 Июня 2003, 13:30:18
Цитировать
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// используется последнее успешно совпавшее.