URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 3923
[ Назад ]

Исходное сообщение
"Помогите разделить строку в перле"

Отправлено alexeylomov , 07-Фев-05 15:35 
есть список файлов  <имя>.<середина>.<окончание>
допустим он хранится в @my_list
Нужно получить список имён @my_names тех файлов, у которых середина=test, то есть то, что идёт у них до первой точки.
Что-то типа:
#!/usr/bin/perl -w
.....
.....
for( my $i = 0; $i < scalar( @my_list ); $i++ ) {
    if( $my_list[$i] =~ /test/ ) {
      push @my_names, <?чего-то_там?>
    }
  }
.....
Подскажите, пожалуйста, что там вписать?
Или предложите другой способ.

Содержание

Сообщения в этом обсуждении
"Помогите разделить строку в перле"
Отправлено sly , 07-Фев-05 16:09 
my @test_names;
foreach my $fh (@my_names){
    if ($fh =~ /^(\w+)\.test\.\w+$/){
        push @test_names,$1;
    }
}

>есть список файлов  <имя>.<середина>.<окончание>
>допустим он хранится в @my_list
>Нужно получить список имён @my_names тех файлов, у которых середина=test, то есть
>то, что идёт у них до первой точки.
>Что-то типа:
>#!/usr/bin/perl -w
>.....
>.....
>for( my $i = 0; $i < scalar( @my_list ); $i++ )
>{
>    if( $my_list[$i] =~ /test/ ) {
>      push @my_names, <?чего-то_там?>
>    }
>  }
>.....
>Подскажите, пожалуйста, что там вписать?
>Или предложите другой способ.



"Помогите разделить строку в перле"
Отправлено alexeylomov , 07-Фев-05 16:18 
>my @test_names;
>foreach my $fh (@my_names){
>    if ($fh =~ /^(\w+)\.test\.\w+$/){
>        push @test_names,$1;
>    }
>}
>
>>есть список файлов  <имя>.<середина>.<окончание>
>>допустим он хранится в @my_list
>>Нужно получить список имён @my_names тех файлов, у которых середина=test, то есть
>>то, что идёт у них до первой точки.
>>Что-то типа:
>>#!/usr/bin/perl -w
>>.....
>>.....
>>for( my $i = 0; $i < scalar( @my_list ); $i++ )
>>{
>>    if( $my_list[$i] =~ /test/ ) {
>>      push @my_names, <?чего-то_там?>
>>    }
>>  }
>>.....
>>Подскажите, пожалуйста, что там вписать?
>>Или предложите другой способ.

Спасибо.


"Помогите разделить строку в перле"
Отправлено PoizOn , 10-Фев-05 16:57 
НУ на примере объясню. файл например имеет имя good.test.txt, загоняем все файлы в массив через opendir, readdir, затем по массиву организуем поиск, например такой:

$string="good.test.txt";# для примера в твоем случае это будет один из элементов массива

$string=~/(\w+)\.(\w+)\.(\w+)/;

print "Начало: $1\nСередина: $2\nКонец: $3\n";

ну а эти данные вы можете уже засунуть куда угодно. Сверив середину со словом test.


"Помогите разделить строку в перле"
Отправлено alexeylomov , 10-Фев-05 17:26 
>НУ на примере объясню. файл например имеет имя good.test.txt, загоняем все файлы
>в массив через opendir, readdir, затем по массиву организуем поиск, например
>такой:
>
>$string="good.test.txt";# для примера в твоем случае это будет один из элементов массива
>
>
>$string=~/(\w+)\.(\w+)\.(\w+)/;
>
>print "Начало: $1\nСередина: $2\nКонец: $3\n";
>
>ну а эти данные вы можете уже засунуть куда угодно. Сверив середину
>со словом test.

Понятное дело, просто никак не могу запомнить что означают эти символы в  /  . . .  /


"Помогите разделить строку в перле"
Отправлено PoizOn , 11-Фев-05 10:05 
>
>Понятное дело, просто никак не могу запомнить что означают эти символы в
> /  . . .  /

Все просто, каждая из переменных $1 и до бесконечности (да да - в отличии от джавы, где возможно только от 1 до 9), автоматически получает в качестве значения часть строки, которая совпала с шаблоном заключенным в скобки.
То есть, обратите внимание на мой пример, в нем 3 пары круглых скобок с шаблонами внутри, и переменных $1,$2,$3 - тоже три, если бы у нас было 4 паря скобок, то можно было бы использовать $4, и так даллее.