use warnings; use strict; use File::Spec::Functions qw/splitdir catdir/; while (my $line = ) { 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/