2010-01-11 45 views

回答

7
local $_ = $currentLine; 
if (/=/) { 

if ($currentLine =~ /=/) { 
7
my $currentLine; # presumably this has a value from something earlier 

if ($currentLine =~ /=/) 
{ 
    # line has an = in it 
} 
else 
{ 
    # it doesn't 
} 

閱讀位於perldoc perlop=~運營商,並在perldoc perlre正則表達式。

+0

感謝您的參考鏈接。 –

11

最簡單的方法是使用index

if (index($line, '=') > -1) { 

它比一個正則表達式更快,因爲它是在C級完成,無需任何編圖。如果您正在尋找在Perl代碼,你可能不關心,如果有一個註釋行等號,所以有這樣的:

$line =~ m/^[^#]*=/; 

如果不能滿足您的需求,然後使用第一。

+0

並非所有行上的'#'字符都表示註釋。它們可能被嵌入到字符串中,或​​者它們可能被用作'q ##','s ###'和其他相關運算符的引號字符。因此,可能'='。 –

+0

@Rob Kennedy:好的一點,但這不太可能是一個文字在左邊。當然,你可以分配給'$#some_array',這是一個更可能的問題。儘管如此,問題有點複雜,代碼的完整解決方案几乎需要完整的解析器。 – Axeman

+1

提及'索引'的+1。 –

相關問題