我正在尝试编写一个脚本,该脚本将从命令行中获取字符串和单个字符,然后在字符串中搜索单个字符的出现次数。我试图通过将字符串转换为数组并循环遍历数组的每个单独元素来尝试这样做,但每次尝试执行此操作时都会得到0。是否可以将字符串转换为单个字符数组,还是应该尝试新方法?
use strict;
use warnings;
if ($ARGV[0] eq '' or $ARGV[1] eq '') {
print "Usage: pe06f.pl string char-to-find\n";
exit 1;
}
my $string = $ARGV[0];
my $searchChar = $ARGV[1];
if (length($searchChar) > 1) {
print "Second argument should be a single character\n";
exit 2;
}
my @stringArray = split /\./,$string;
my $count = 0;
$i = 0;
for ( $i=0; $i <= length($stringArray); $i++) {
if ( $stringArray[$i] eq $searchChar) {
print "found $b at position $i";
$count++;
}
}
print "found $count occurrences of $searchChar in $string\n";
答案 0 :(得分:1)
你可以试试这个:
#!/usr/bin/perl
use warnings;
use strict;
my ($str, $chr) = @ARGV;
my $cnt = () = $str =~ m/$chr/g;
print "$cnt\n";
说明:
$cnt = () = $str =~ m/$chr/g
会找出字符串$chr
中有多少个字符$str
匹配,以下是它实现的方式:
$str =~ m/$chr/g
将执行全局模式匹配(/g
)和() = ...
会将该模式匹配到列表上下文中,$cnt = ...
会将该列表放在标量上下文中,$cnt
的值将是该列表中元素的数量。