Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Почему


Автор: n0xi0uzz 21.2.2005, 03:18
Код

$top = "1.top";
($num, $a)=split(/./, $top);
print "$num\n$a";


ничего не вывводит smile
как по-другому можно выделить эту еденичку?

Автор: opi 21.2.2005, 03:36
Код

$top = "1.top";
$top =~ /^(\d+)\.(.*)$/;
print "$1\n$2\n";


???

Цитата(n0xi0uzz @ 21.2.2005, 03:18)
Код

$top = "1.top";
($num, $a)=split(/./, $top);
print "$num\n$a";


ничего не вывводит smile
как по-другому можно выделить эту еденичку?

Автор: korob2001 21.2.2005, 04:37
Если тебе нужно тольк число, то делай так:
Код

#!/usr/bin/perl -w
use strict;
my $top = "120.top";
my $num = ( split(/\./, $top) )[0];
print $num;

Как видиш ошибка была в том, что ты не перекрыл точку в шаблоне, в split. Если перевести твой шаблон на русский язык, то его примерно можно описать так:
Разбить строку по любому символу. Вот он и разбивает её, по любому символу. Если посмотреть в документацию то можно заметить там такую сноску:
Когда строка разбивается с помощью split, то символ разделитель вырезается. В твоём случае символом разделителем является любой символ. Потому в результате мы получаем пустую строку.

Если тебе необходима и строка, которая находится после точки, то можешь заюзать свой код, только поправь шаблон, так же можешь воспользоваться тем, что предоставил тебе opi.

Автор: GoodBoy 21.2.2005, 14:06
Код
$top = "1.top";
($num, $a)=split(/\./, $top);
print "$num\n$a";

Ошибка была тут: /./ нужно: /\./

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)