1) 如何在一个字符串中查找某个字符出现的次数?

原文出处:http://www.perl.com/doc/FAQs/FAQ/oldfaq-html/Q4.24.html

如果你想在一个字符串中查找字符(X)出现的次数,你可以用**tr///**这个函数、配合下面的方法来实现:

$string = “ThisXlineXhasXsomeXx’sXinXit”:
$count = ($string =~ tr/X//);
print “There are $count Xs in the string”;

2) 如何在一个字符串中查找某个子字符串出现的次数?

上面的代码对于你只查找单个字符来说,是非常有效的。然而,如果你试图计算多个字符组成的子字符串、在一个大字符串中出现的次数,函数tr///就不起作用了。这个时候,我们就需要加一个while循环了:

$string = “-9 55 48 -2 23 -76 4 14 -44”;
$count++ while $string =~ /-\d+/g;
print “There are $count negative numbers in the string”;

3)Perl里查询某一个文件里某一个字符串出现了多少行、以及包含该字符串的行的内容

原文出处:http://www.perlmonks.org/?node_id=650671

我们可以用如下代码实现,子过程**retriver()**进行读文件、查找等操作。

use strict;
use warnings;
sub retriver();
my @lines;
my $lines_ref;
my $count;
$lines_ref = &retriver();
@lines =@$lines_ref;
$count = @lines;
print “Count :$count\nLines\n”;
print join “\n”,@lines;
sub retriver()
{
    my $file = ‘source_data\data.txt’;
    open FILE, $file or die “FILE $file NOT FOUND – $!\n”;
    my @contents = ;
    my @filtered = grep(/abc:/,@contents);
    return @filtered;
}