in reply to Building scalar from File::Find

From your description, maybe you want something like this:
#!/usr/bin/perl use strict; use warnings; use File::Find; my $base = "/home/sthoenna/bleadperl/perl"; find(\&wanted, $base); sub wanted { return unless ( -f "$File::Find::name" and $File::Find::name !~ m!/ +Encode/! ) ; my $name = "$File::Find::name"; my $out = join '.', grep defined, reverse( (split(m!/!, $name))[4 +..7] ); print "$out\n"; }
Added warnings, reversing the names, removing unreached levels. Removed the extra my $out at the beginning; hope you realize that was a completely separate variable from the wanted sub's my $out. Removed the unused FileHandle stuff.

I like to always say m// for the first parameter to split to remind me that it is a regex...it's too easy to do something like split '+' and be surprised when it fails. (The exception is " " (a single blank) which split treats specially, not as a regex.)