我正在开发一个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
我应该如何检索标签之间的数据? 有没有办法使用正则表达式?
答案 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。