Нет разницы между m{}
и m[]
. Perl позволяет вам изменять разделители регулярных выражений, чтобы их было легче читать в заданном контексте.
$var =~ m/*.zip/
и $var =~ m{*.zip}
и $var =~ m[*.zip]
и $var =~ m#*.zip#
все совпадают одинаково.
Для групп захвата захваты всегда обрабатываются слева направо, для вашего примера:
my $foo = 'CuNaHg';
if ( $foo =~ m{(((Cu)(Na))(Hg))} ) {
print $1; # CuNaHg
print $2; # CuNa
print $3; # Cu
print $4; # Na
print $5; # Hg
}