2013-07-17 58 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

相关问题