Из двух вариантов, одинаковых по сложности написания, надо выбирать тот, что шустрее работает. В перле скорость выполнение можно замерить средствами модуля
Benchmark. Пробуем:
#!/usr/bin/perl -w
use strict;
use Benchmark qw(:all);
my $long = 'c_documents_and_settings_administrator_moi_dukumenty_files_very_very_very_long_name.doc';
my $short;
cmpthese(1e6, {
'regexp' => sub { $short = $1 if ($long =~ /(.{1,25})$/); },
'substr' => sub { $short = substr $long, -25 },
});
Получаем:
Rate regexp substr
regexp 315271/s -- -77%
substr 1361702/s 332% --
То есть, получение хвоста строки
функцией substr осуществляется в 3 раза быстрее, чем
регулярными выражениями.