我想数一数字符数后,我已经确定了起点。
__DATA__
1-thisthestartingpoint
COUNTTHENUMBEROFCHARACTERSPRESENTINTHISLINEBEFORETHENEXTSTARTINGPOINT
COUNTTHENUMBEROFCHARACTERSPRESENTINTHISLINEBEFORETHENEXTSTARTINGPOINT
COUNTTHENUMBEROFCHARACTERSPRESENTINTHISLINEBEFORETHENEXTSTARTINGPOINT
2-nextstartingpoint
ETCETCETCETCDONOTCOUNTTHENUMBEROFCHARACTERSPRESENTINTHISLINE我写了以下脚本,但似乎解决不了这个问题。它不指向字符应该被计数的行,而是给出1-thisisthestartpoint的长度。关于如何计算正则表达式后面行中的字符数的任何建议。一般来说,我对Perl和编程都很陌生,所以请轻松一点。
open (FILE, "/usr/filename") || die "cant open filename";
my @body = <FILE>;
foreach $_(@body){
last if ($_=~/[2-9]-[a-z]+/);
if ($_=~ /1-[a-z]+/){
chomp ($_);
push (@value ,split (//,$_));
my $length = @value;
print @value;
print "\n the length is $length\n";
}发布于 2009-08-05 02:56:32
这是一种人为的回答,但问题是(国际海事组织)措辞太奇怪了,我不确定我是否理解这里的观点.
#!/usr/bin/perl
use strict;
use warnings;
chomp( my @lines = <DATA> );
my $data = join '' , @lines;
my( $string ) = $data =~ /1-[a-z]+(.*)[2-9]-[a-z]+/;
printf "the length is %d\n" , length( $string );
__DATA__
1-thisthestartingpoint COUNTTHENUMBEROFCHARACTERSPRESENTINTHISLINEBEFORETHENEXTSTARTINGPOINT
COUNTTHENUMBEROFCHARACTERSPRESENTINTHISLINEBEFORETHENEXTSTARTINGPOINT
COUNTTHENUMBEROFCHARACTERSPRESENTINTHISLINEBEFORETHENEXTSTARTINGPOINT 2-nextstartingpoint
ETCETCETCETCDONOTCOUNTTHENUMBEROFCHARACTERSPRESENTINTHISLINE和产出:
$ ./foo.pl
the length is 209发布于 2009-08-05 03:18:52
这还将计算起始点标记中的字符:
#!/usr/bin/env perl
use strict;
use warnings;
my $count;
while ( <DATA> ) {
$count += length if m'thisthestartingpoint' .. m'nextstartingpoint';
}
print "count: $count\n";
__DATA__
1-thisthestartingpoint
COUNTTHENUMBEROFCHARACTERSPRESENTINTHISLINEBEFORETHENEXTSTARTINGPOINT
COUNTTHENUMBEROFCHARACTERSPRESENTINTHISLINEBEFORETHENEXTSTARTINGPOINT
COUNTTHENUMBEROFCHARACTERSPRESENTINTHISLINEBEFORETHENEXTSTARTINGPOINT
2-nextstartingpoint
ETCETCETCETCDONOTCOUNTTHENUMBEROFCHARACTERSPRESENTINTHISLINE发布于 2009-08-05 02:24:59
我不是perl向导,但是您需要在循环中执行下一步,以便它在startpoint之后开始计数。计算的长度是下一行字符的+1。
#!/usr/bin/perl
open (FILE, "./abc") || die "cant open filename";
my @body = <FILE>;
foreach $_(@body){
last if ($_=~/[2-9]-[a-z]+/);
if ($_=~ /1-[a-z]+/) { $found = 1; next; };
if ($found == 1)
{
chomp ($_);
push (@value ,split (//,$_));
my $length = @value;
print @value;
print "\n the length is $length\n";
}
}https://stackoverflow.com/questions/1230782
复制相似问题