2013-07-17 89 views
-4

我有一個文本文件,我想用substring函數根據它們的偏移值找到字符串。perl中匹配字符串的第一個字

我的輸入文件是這樣的:

[1] Line one 
[2] Line two 
[3] Line three 

我的代碼是:

use strict; 
use warnings; 

my $f2 = 'Test.txt'; 
my ($text, $str); 
    open (FH1, $f2) || die; 
    $text = join '', <FH1>; 
    $str = substr($text, 16, 5); 
    print $str,"\n"; 

需要找到其數量目前爲匹配文本的第一詞。

輸出應看起來像

[2]--Line 

匹配的字符串爲「線」,而行的第一個字是[2]。

+0

我正在從另一個文件偏移細節,所以唯一的選擇就是找到使用膠版詳細文本。所以,我不能使用正則表達式。 – VSr

+0

你需要找到文件中位置16的那一行嗎?在那一行你需要找到第一個單詞?如果是這樣,請逐行讀取文件,並記錄它們的總長度。讀完足夠多的字符後,您將擁有需要的行。然後使用正則表達式從該行中獲取正確的單詞。 – FMc

回答

0

有關SUBSTR functionr是指它信息的文檔:

http://perldoc.perl.org/functions/substr.html

這個函數的一般形式是:

substr EXPR,OFFSET,LENGTH 

同樣注意到,您正在使用SUBSTR($文本,16,5),但鑽石逐行讀取文件(因爲您在標量上下文中使用它,所以16從哪裏來?)您必須從頭開始您的偏移量。 perlop:

http://perldoc.perl.org/perlop.html

+1

你的問題很模糊,你想找什麼?什麼是16?你正在從字符16開始,取長度爲5的$文本的子字符串(這是你剛剛從文件中得到的一行,並且包含一行)。但是,如果文本的長度小於16,那麼你是什麼想找到? – gst

+0

是的,但偏移和長度必須正確,它們在您使用它們的上下文中必須有意義。 – gst

+0

到達邏輯來繪製匹配子字符串的第一個單詞。 – VSr

相關問題