#!/usr/bin/perl
open(SARAN,"first.txt") or die "Can't Open: $!\n";
while($line=<SARAN>)
{
print "$line\n";
}
close SARAN;
嗨, 在上面的Perl腳本,我需要一個功能... 在first.txt,每一行與前面的一些空間開始.. 我需要打印的線條,而不在前面的空間.. 怎麼辦。在Perl中,如何打印從文件中讀取的行並刪除了可選的前導空白字符?
感謝..
#!/usr/bin/perl
open(SARAN,"first.txt") or die "Can't Open: $!\n";
while($line=<SARAN>)
{
print "$line\n";
}
close SARAN;
嗨, 在上面的Perl腳本,我需要一個功能... 在first.txt,每一行與前面的一些空間開始.. 我需要打印的線條,而不在前面的空間.. 怎麼辦。在Perl中,如何打印從文件中讀取的行並刪除了可選的前導空白字符?
感謝..
您的問題不明確:您是否想要打印不帶空格的行 或刪除任何前導空格後打印所有行?
@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;
注意以下幾點:
你可以這樣做:
while($line=<SARAN>) {
$line=~s/^\s+//; # delete the leading whitespace.
print "$line\n";
}
我們使用Perl's substitute operators
,讓我們用一個正則表達式匹配並替換成另一個字符串匹配字符串的一部分。
這裏我們使用正則表達式^\s+
^
是開始錨。\s
是任何空格字符。+
量詞來標記一個或多個我們基本上相匹配,並沒有這實際上意味着刪除它們替換領先的一個或多個空格字符。
+1爲最佳實踐和問題的替代含義。 – Toto 2010-09-17 12:23:45
輕微的步伐。該正則表達式可以簡化爲/ \ s /在這種情況下。無需查找多個主要空白字符。 – 2010-09-17 12:33:22
@davorg更正量詞。但是,該模式仍需要加以錨定。 – 2010-09-17 12:40:21