Forum Webscript.Ru
Программирование => Perl => Тема начата: FANTAzeRus от 15 Декабря 2003, 12:32:19
-
Помогите с регулярным выражением. Как выдрать из полного пути только имя файла.
Пример:
http://www.test.ru/images/test.gif
нужно выдрать только - test.gif
-
$name = \'http://www.test.ru/images/test.gif\';
($file) = $name =~ m!([^/]*)$!
-
use strict;
use Benchmark;
my $name = \'http://www.test.ru/images/test.gif\';
my $file;
timethese(1_000_000, {
\'Name1\' => sub {($file) = $name =~ m!([^/]*)$!},
\'Name2\' => sub {[B]$file = substr($name,rindex($name,"/")+1);[/B]},
});
Benchmark: timing 1000000 iterations of Name1, Name2...
Name1: 52 wallclock secs (52.06 usr + 0.01 sys = 52.07 CPU) @ 19206.39/s (n=1000000)
Name2: 1 wallclock secs ( 1.51 usr + 0.00 sys = 1.51 CPU) @ 661375.66/s (n=1000000)
-
vladsu
[off]Быстрее, не поспоришь. Но изначально речь шла о регулярных выражениях. ;)[/off]
-
Допускаю, что люди зная, что регекспы в Перл мощное средство, пытаются использовать их, и даже не знают, что есть случаи когда можно обойтись без них да еще и выиграть в производительности.
:D