首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一旦计算出起始点,如何计算文件中的字符数?

一旦计算出起始点,如何计算文件中的字符数?
EN

Stack Overflow用户
提问于 2009-08-05 01:45:36
回答 6查看 2K关注 0票数 0

我想数一数字符数后,我已经确定了起点。

代码语言:javascript
复制
__DATA__

1-thisthestartingpoint
COUNTTHENUMBEROFCHARACTERSPRESENTINTHISLINEBEFORETHENEXTSTARTINGPOINT
COUNTTHENUMBEROFCHARACTERSPRESENTINTHISLINEBEFORETHENEXTSTARTINGPOINT
COUNTTHENUMBEROFCHARACTERSPRESENTINTHISLINEBEFORETHENEXTSTARTINGPOINT
2-nextstartingpoint
ETCETCETCETCDONOTCOUNTTHENUMBEROFCHARACTERSPRESENTINTHISLINE

我写了以下脚本,但似乎解决不了这个问题。它不指向字符应该被计数的行,而是给出1-thisisthestartpoint的长度。关于如何计算正则表达式后面行中的字符数的任何建议。一般来说,我对Perl和编程都很陌生,所以请轻松一点。

代码语言:javascript
复制
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";
}
EN

回答 6

Stack Overflow用户

发布于 2009-08-05 02:56:32

这是一种人为的回答,但问题是(国际海事组织)措辞太奇怪了,我不确定我是否理解这里的观点.

代码语言:javascript
复制
#!/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

和产出:

代码语言:javascript
复制
$ ./foo.pl 
the length is 209
票数 1
EN

Stack Overflow用户

发布于 2009-08-05 03:18:52

这还将计算起始点标记中的字符:

代码语言:javascript
复制
#!/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
票数 1
EN

Stack Overflow用户

发布于 2009-08-05 02:24:59

我不是perl向导,但是您需要在循环中执行下一步,以便它在startpoint之后开始计数。计算的长度是下一行字符的+1。

代码语言:javascript
复制
#!/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";
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1230782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档