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


Автор: Bronson 20.7.2009, 19:07
есть файл содержащий    {1,3,4,5 4
                                            3,  4, 5, 6,
                                                   2,3,4}

надо выбрать из строк только скаляры и составить из них один полноценный массив, без пробелов, скобок и прочего, как?

Автор: KSURi 20.7.2009, 20:55
Код

my $data = do {
  open my $fh, '<', 'file' or die $!;
  local $/;
  <$fh>
};
my @digits = $data =~ /(\d+)/gs;

Автор: Itsys 20.7.2009, 21:07
Вроде для лаб. работ уже поздно....  smile 

Автор: Bronson 20.7.2009, 22:51
будет вам смеяться, себя на стадии обучения все помнят...
премного  благодарен..

Автор: Bronson 26.7.2009, 18:38
а тут как я понял удаляется все подряд кроме скаляров, а как поймать интовое отрицательное число

Автор: Itsys 26.7.2009, 19:56
Смотри http://ru.wikipedia.org/wiki/Regexp

Код

my @digits = $data =~ /(\-?\d+)/gs;

Автор: KSURi 26.7.2009, 22:16
А что, целое отрицательное - не скаляр?

Автор: Bronson 28.7.2009, 18:54
my @digits = $data =~ /(\-?\d+)/gs;

а что делать если значения в массиве не в десятичной системе, а в шестнадцатиричной ? нашел только \xnn, но не понял как реализовать

Автор: Itsys 28.7.2009, 19:00
Код

my @digits = $data =~ /(\-?[0-9A-F]+)/gs;

Автор: Bronson 29.7.2009, 19:25
простите за не полную точность, массив в шестнадцатиричной системе записан иначе: 

{0xC, 0x6,0x946
 0x12, 0x194  ,  0x8,   0xE
 0x7,  0x8}

вот из такой записи надо вырвать значения, обязательно в сочетании с "0x"

Автор: Itsys 29.7.2009, 21:32
Тебе надо все разжевать и в рот положить?

Добавлено через 21 секунду
Ну хоть немного надо свою голову включать...

Автор: Bronson 29.7.2009, 22:30
не откажусь, 3-я неделя как с перлом связался

Автор: KSURi 30.7.2009, 08:41
perldoc perlre

Автор: ginnie 30.7.2009, 22:26
KSURi, ты имел ввиду http://perldoc.perl.org/perlre.html?

Автор: KSURi 31.7.2009, 00:21
Упс. Да, конечно. Спасибо за исправление. Пост свой отредактировал, чтобы людей не смущать.

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