如何在Perl中检索标签之间的数据?

时间:2010-09-20 11:15:03

标签: regex perl

我正在开发一个perl脚本。

这是我在文件 new.txt 中的输入字符串:

<ID>1</ID>
<CLASS>One</CLASS>
<NAME>Saran</NAME>

这是我的代码,它只打印三行:

#!/usr/bin/perl 
open(FILEHANDLE1,"new.txt") or die "Can't Open: $!\n";
while($line=<FILEHANDLE1>)
{ 
print "$line";
}
close FILEHANDLE1;

我需要它才能只显示标签之间的内容。该 输出应该是:

1 One Saran

我应该如何检索标签之间的数据? 有没有办法使用正则表达式?

3 个答案:

答案 0 :(得分:8)

答案 1 :(得分:2)

你有什么尝试?你有什么具体问题?

看起来你可能会想要这样的东西:

#!/usr/bin/perl

use strict;
use warnings;

$_ = 'Data1 some text Data2';

if (/Data1(.*)Data2/) {
  print "$1\n";
}

但你的问题太模糊了,很难确定。

答案 2 :(得分:2)

如果您的输入文件与您所描述的完全相同,则可以执行以下操作:

#!/usr/bin/perl 

use warnings;
use strict;
open my $FILEHANDLE1, '<', "new.txt" 
     or die "Can't open file 'new.txt' for reading: $!";
while(my $line=<$FILEHANDLE1>) { 
    chomp $line;
    $line =~ s!^<(\w+)>(\w+)</\1>!$2 !;
    print $line;
}
print "\n";
close $FILEHANDLE1;

始终

use strict;

use warnings;

使用三个args open和lexical handle。