in reply to Question about WWW::Mechanize

Something like this might serve:
>perl -wMstrict -le "print q{output:}; for my $url (@ARGV) { (my $filename = $url) =~ s{ .* / (\d+) / (_ \d+ \. pdf) \z } {$1\L$2}xmsi; print qq{url: $url -> filename: $filename}; } " /pdf/100004/_20090326.pdf /pdf/100006/_20090326.pdf /foo/bar/pdf/123/_456.PdF output: url: /pdf/100004/_20090326.pdf -> filename: 100004_20090326.pdf url: /pdf/100006/_20090326.pdf -> filename: 100006_20090326.pdf url: /foo/bar/pdf/123/_456.PdF -> filename: 123_456.pdf
Or a slightly simpler version using split (output still lowercased):
>perl -wMstrict -le "print q{output:}; for my $url (@ARGV) { my $filename = lc join '', (split '/', $url)[-2, -1]; print qq{url: $url -> filename: $filename}; } " /pdf/100004/_20090326.pdf /pdf/100006/_20090326.pdf /foo/bar/pdf/123/_456.PdF output: url: /pdf/100004/_20090326.pdf -> filename: 100004_20090326.pdf url: /pdf/100006/_20090326.pdf -> filename: 100006_20090326.pdf url: /foo/bar/pdf/123/_456.PdF -> filename: 123_456.pdf
Updates:
  1. Added lowercasing ("\L") to  s/// version replacement string.
  2. Added  split version.