В Perl, как я могу распечатать строки, прочитанные из файла с удаленными необязательными начальными пробелами? - PullRequest
2 голосов
/ 17 сентября 2010
#!/usr/bin/perl 
open(SARAN,"first.txt") or die "Can't Open: $!\n";
while($line=<SARAN>)
{ 
print "$line\n";
} 
close SARAN;

Привет, В приведенном выше скрипте Perl мне нужна одна функциональность ... в first.txt каждая строка начинается с некоторого пробела впереди ... Мне нужно печатать строки без пробела впереди ... Чтоделать.

спасибо ..

Ответы [ 2 ]

8 голосов
/ 17 сентября 2010

Ваш вопрос неоднозначен: вы хотите напечатать строки, которые не начинаются с пробелом (ами) или распечатать все строки после удаления пробела (ов)?

@ codaddict показал, как это сделать. Я покажу, как сделать первое:

#!/usr/bin/perl 

use strict;
use warnings;

open my $SARAN, '<', "first.txt" 
    or die "Can't open 'first.txt': $!";

while (my $line = <$SARAN>) 
{ 
    print $line unless $line =~ /^\s/;
} 

close $SARAN;

Обратите внимание на следующее:

  • use strict поможет вам поймать ошибки программирования.
  • use warnings предупредит вас сомнительные конструкции.
  • Файловые дескрипторы Bareword, такие как SARAN, являются глобальными пакетами. Используйте лексический дескрипторы файлов.
  • Предпочитать форму с тремя аргументами open, особенно если имя файла не жестко закодировано.
  • Включить имя файла в сообщение об ошибке.
  • Так как вы не chomp ing $line, print "$line\n" приведет к удвоению новой строки.
7 голосов
/ 17 сентября 2010

Вы можете сделать:

while($line=<SARAN>) { 
  $line=~s/^\s+//;  # delete the leading whitespace.
  print "$line\n";
}

Мы используем оператор замены Perl s, который позволяет нам найти совпадение с помощью регулярного выражения и заменитьчасть строки, совпадающая с другой строкой.

Здесь мы используем регулярное выражение ^\s+

  • ^ - начальный якорь.
  • \sявляется любым символом пробела.
  • + квантификатор для пометки одного или нескольких

В основном мы сопоставляем и заменяем один или несколько пробельных символов на ничто, что фактически означает их удаление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...