LINUX.ORG.RU

Простой вопрос по reg ex


0

0

Есть файл inf.txt:
qqq
hello
qqq
hello
p

и скрипт re.pl:
open FD,"inf.txt";
foreach(<FD>)
{
  s/hello//;
  print;
}

После запуска на выход выдаётся
qqq
 
qqq
 
p

Как сделать так, чтобы пустые строки удалялись?
Т.е. нужно, чтобы на выходе было:
qqq
qqq
p
Ответ на: комментарий от Zulu

У меня другая проблема - я использую Tie::File и там так нельзя!
Можно ли реализовать мою проблему средствами регулярных выражений?

Krivenok_Dmitry
() автор топика
Ответ на: комментарий от Zulu

> зачем делать руками то, что уже сделано?

Ну IMHO подразумевалось, что в цикле содержится намного
больше, чем просто s/hello//. В таком случае one-liner
становится неудобным.

BTW, '< inf.txt' лишнее, достаточно передать inf.txt как аргумент
командной строки.

Onanim
()
Ответ на: комментарий от Krivenok_Dmitry

> У меня другая проблема - я использую Tie::File и там так нельзя!
> Можно ли реализовать мою проблему средствами регулярных выражений?
>

Это у тебя уже следующий вопрос?
Что-то в твоем коде никакого File::Tie не видно :-/
Давай тогда код.

Onanim
()
Ответ на: комментарий от aton

2aton:

> foreach ( <FD> )
> {
>   print if s/hello//;
> }
>

Ну и зачем человека в заблуждение вводить?
Может проверим?

$ cat inf.txt
qqq
hello
qqq
hello
p
$ perl -n -e 'print if s/hello//' < inf.txt
 
 
$

Вот и весь твой вывод :-(

Onanim
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.