IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   Perl: каталог, регулярное выражение (http://www.imho.ws/showthread.php?t=64914)

Goryn 23.07.2004 21:47

Perl: каталог, регулярное выражение
 
У меня два вопроса по Perl, на которые я никак не найду ответа:

1. Как переименовать каталог. Я нашел только функции создания и стирания.

2. Как мне использовать переменную в регулярном выражении. То есть мне в сроковой переменной нужно найти/заменить конкретную подстроку, которая храниться в переменной, значение которой формируется в процессе выполнения скрипта. Как мне в таком случае использовать ~s ?

Sava 24.07.2004 03:50

1. rename($dir1,$dir2) и всё. :)
2. Мне на вскидку пришло 2 варианта не знаю какой лучше(всё таки 3 часа ночи башка не варит :)) первый строка=~s/переменная-шаблон/переменная-замены/g ну может ещё какие нужно опции типа i и т.д. А вторая это использовать массив=split(переменная-шаблон,строка) + строка=join(переменная-замены,массив) выбирай что больше нравится. :)

rontommy 24.07.2004 11:12

Цитата:

Goryn:
Как мне использовать переменную в регулярном выражении.
Также как и постоянную строку, есть только одна деталь. Если значение переменной формируется многократно, то никаких дополнительных опций не надо (Пример 1). Если же только один раз, есть опция 'o', по которой реализация значения переменной происходит только первый раз (Only compile pattern once) а далее всегда используется это значение, вне зависимости от значения переменной на момент вызова подстановки строк (Пример 2).

Пример 1
Код:

$match_str = '1';
$replace_str='bb';
for $name (@files) {
  $name =~ s/${match_str}/${replace_str}/g;
  $match_str++;
}

Пример 2
Код:

$match_str='aa';
$replace_str='bb';
for $name (@files) {
  $name =~ s/${match_str}/${replace_str}/og; # Заменяет всегда aa
  $match_str='zz';
}


n0n 10.08.2004 01:39

Что-бы не делать новую тему, задам свой вопросик здесь, если вы не против :)

Задача следующая - надо разбить строку типа
Код:

ftp://login:pass@host.com
соответственно на $login, $pass и $host, проблема заключается лишь в том что в pass - может содержаться символ "@" , а может и не содержаться. Вот как это учесть? Не могу придумать...

Заранее благодарен.


Часовой пояс GMT +4, время: 07:36.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.