Это будет работать - обновлено для использования побитового или вместо троичного оператора.
my ($a,$b,$let) = ($version =~ m/^(\d+)\.(\d+)\.?([A-Za-z])?$/)
&& ($1,$2,$3 || 0 );
Вот тестовый скрипт
&t("1.3");
&t("1.3a");
&t("1.3.a");
sub t {
$version = shift;
my ($a,$b,$let) = ($version =~ m/^(\d+)\.(\d+)\.?([A-Za-z])?$/)
&& ($1,$2,$3 || 0 );
print "\n result $a.$b.$let";
}
Вывод
result 1.3.0
result 1.3.a
result 1.3.a
оригинальное решение с использованием троичного оператора также работает
my ($a,$b,$let) = ($version =~ m/^(\d+)\.(\d+)\.?([A-Za-z])?$/)
&& (defined $3 ? ($1,$2,$3) : ($1,$2,0));