There's More Than One Way To Do It... this one is cross-platform:
use warnings; use strict; use File::Spec::Functions qw/splitdir catdir/; while (my $line = <DATA>) { chomp $line; my $out = do { local $.=0; catdir grep {$.++;1../^\d+\.\d+$/} splitdir($line) }; print $out, "\n"; } __DATA__ /fd/gfree/tere/frf4545/geerg/fds/0.1/fsdf/dsakdsa/ /fd/gfree/tere/frf4545/geerg/dfds/5.9/fdsf/fdsfd/ /fd/gfree/tere/frf4545/geerg/dsad/02.44/fdsf/fdsf/
Output:
/fd/gfree/tere/frf4545/geerg/fds/0.1 /fd/gfree/tere/frf4545/geerg/dfds/5.9 /fd/gfree/tere/frf4545/geerg/dsad/02.44
Updates 1 and 2: Updated the code above to better limit the scope of the local $., and the map {...?$_:()} is better written as a grep.
In reply to Re: Pattern replace in a file name (updated)
by haukex
in thread Pattern replace in a file name
by kaushik9918
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |