Подскажите плиз как в регулярное выражение на PERL подставить переменную
>Подскажите плиз как в регулярное выражение на PERL подставить переменную
руками, а что возможно как-то по другому?
Что за выражение, что требуется и т.д.
Ответ кому нужен?
Каков вопрос - таков ответ!
пример
while(<>){
$_=~/(\S*)\s/$1/;
print $1;
}
>пример
>while(<>){
>$_=~/(\S*)\s/$1/;
>print $1;
>}Это типа регулярное выражение? ну ладно, и в чем проблема подставить сюда переменную?
напримерopen (FILE,"//home/USER/file.txt");
my $zamena="bla-bla-bla";
while($line=<FILE>) {
my $oldline=$line
$line=~/(\S*)\s/$zamena/gi;
print "$oldline\n$line\n$zamena"; #последовательно выведет тебе старую строку файла, потом полученную в результате использования s/// и переменную на которую проводилась замена нужных символов.
}
close(FILE);
Так в чем проблема?
>>пример
>>while(<>){
>>$_=~/(\S*)\s/$1/;
>>print $1;
>>}
>
>Это типа регулярное выражение? ну ладно, и в чем проблема подставить сюда
>переменную?
>например
>
>open (FILE,"//home/USER/file.txt");
>my $zamena="bla-bla-bla";
>while($line=<FILE>) {
>my $oldline=$line
>$line=~/(\S*)\s/$zamena/gi;
>print "$oldline\n$line\n$zamena"; #последовательно выведет тебе старую строку файла, потом полученную в результате
>использования s/// и переменную на которую проводилась замена нужных символов.
>}
>close(FILE);
>Так в чем проблема?
Если мне не изменяет память у меня не работало пока я не добавил модификатор x
>Если мне не изменяет память у меня не работало пока я не
>добавил модификатор x
Суть не в этом, модификаторы можно подставить по вкусу и взависимости от задачи. Я даже не вчитывался в регулярку. Посто не понимаю сути вопроса, почему нельзя поставить переменную? или человек имеет ввиду, что переменная замены должна меняться в зависимости от времени. тогда весь код в студию, цель, задачу и начнем разбор. А так из разряда сделайте мне чего-нить пожалуйста, а чего я сам не знаю. Но сделайте.
Как заменить в текстновом файле все ip (172.16.0.1) на ip (10.10.10.1)?
>Как заменить в текстновом файле все ip (172.16.0.1) на ip (10.10.10.1)?
это, как его, курить в сторону s/// $)
>>Как заменить в текстновом файле все ip (172.16.0.1) на ip (10.10.10.1)?
>
>
>это, как его, курить в сторону s/// $)
проще sed.
>>>Как заменить в текстновом файле все ip (172.16.0.1) на ip (10.10.10.1)?
>>
>>
>>это, как его, курить в сторону s/// $)
>
>
>проще sed.Вызывать sed скрипт из перлового, который вызывается из cgi, который рожает апач, который запущен initd-ом, который запустило ядро :)
зы. Вроде ничего не напутал :)
>Вызывать sed скрипт из перлового, который вызывается из cgi, который рожает апач,
>который запущен initd-ом, который запустило ядро :)
>
>зы. Вроде ничего не напутал :)
Ээээ.. минуточку. В начальной постановке задачи не было сказано, что это ЦГИ. Как следствие все рассуждения беспочвенны :))
>>Вызывать sed скрипт из перлового, который вызывается из cgi, который рожает апач,
>>который запущен initd-ом, который запустило ядро :)
>>
>>зы. Вроде ничего не напутал :)
>
>
>Ээээ.. минуточку. В начальной постановке задачи не было сказано, что это ЦГИ.
>Как следствие все рассуждения беспочвенны :))Да, но я предположил как вероятную ветвь развития событий :)
>Как заменить в текстновом файле все ip (172.16.0.1) на ip (10.10.10.1)?
открой файл в мс на редактирование и дай ему заменить (F4) :))
Создаем файл replace---
#!/usr/bin/perl -iwhile (<>) {
s/172\.16\.0\.1/10\.10\.10\.1/;
print $_;
}
---Запускаем
replace textfileИли так
perl -p -i -e 's/172\.16\.0\.1/10\.10\.10\.1/' text
Блин в самом веху точно такой вариант, только другие переменные, разобрали. Я вообще не понимаю, что это за флейм. Человеку лень почитать доку, ему лень конкретно описать задачу. Все лень. Блин, куда админы и программеры катятся...
Скоро так и в еникейщики перейти недолго...
ЗЫ: курить доки по perl-у изучать операторы while,foreach, m//,s/// в первую очередь, за ними модификаторы.
>Блин в самом веху точно такой вариант, только другие переменные, разобрали. Я
>вообще не понимаю, что это за флейм. Человеку лень почитать доку,
>ему лень конкретно описать задачу. Все лень. Блин, куда админы и
>программеры катятся...
>Скоро так и в еникейщики перейти недолго...
>ЗЫ: курить доки по perl-у изучать операторы while,foreach, m//,s/// в первую очередь,
>за ними модификаторы.Эт точно.
пример выше означает что необходима дополнительная обработка переменных для экранирования спецсимволов(две переменные) и это простой примерчик с ip(.) а если посложнее фразочка... Имхо должен быть подход для точного совпадения после одной инреполяции переменной($ip -> 10.10.10.1) а далее как есть.PS: Просто по уму(когда не известна сторка поиска(она может быть любой)) надо тогда писать функции обработки значения переменных для экранирования всех модификаторов и их комбинаций...