这是一个镜头:
use strict;
use warnings;
my($strip) = shift || 0;
print FindTeamName("TEAMJimBob", "TEAMJoeBob", "TEAMBillyBob"), "\n";
print FindTeamName("TEAM|JimBob", "TEAM|JoeBob", "TEAM|BillyBob"), "\n";
print FindTeamName("TEAM | JimBob", "TEAM | JoeBob", "TEAM | BillyBob"), "\n";
print FindTeamName("TEAMJimBob", "TEAM|JoeBob", "TEAM - BillyBob"), "\n";
sub FindTeamName
{
my(@players) = @_;
my($team) = shift;
foreach my $player (@players) {
$team = FindCommonString($team, $player);
}
$team =~ s{\W+$}{} if $strip;
$team;
}
sub FindCommonString
{
my($str1, $str2) = @_;
my(@arr1) = split(//, $str1);
my(@arr2) = split(//, $str2);
my($common) = "";
while (@arr1 && @arr2) {
my($letter1) = shift(@arr1);
my($letter2) = shift(@arr2);
if ($letter1 eq $letter2) {
$common .= $letter1;
}
else {
last;
}
}
$common;
}
这给出了以下内容:
C:\temp>perl test.pl
TEAM
TEAM|
TEAM |
TEAM
C:\temp>perl test.pl 1
TEAM
TEAM
TEAM
TEAM
C:\temp>