Hi ,
my $filenm = "urpmi-parallel-ssh-4.0-20.1mdk.noarch.rpm";
if ($filenm =~ m/((\w+)-)+/){
($arr,undef,$var70,undef,$var97) =
split (/((?<=[a-z])\.(?=[a-z]))/,$');
local $str57 = $&;
$str57 =~ s/-$//;
print "[$str57]\n";
print "[$arr]\n";
print "[$var70]\n";
print "[$var97]\n";
}
__END__
[urpmi-parallel-ssh]
[4.0-20.lmdk]
[noarch]
[rpm]
This solution is through extended pattern of regular expressions . This is , I guess what you may looking for as a regular expression matching and having the answer .