$ cat 691281.pl use strict; use warnings; use File::HomeDir; use Test::More; plan tests => 4; sub rep_tilde { my $filename = shift; $filename =~ s/^~(\w+)/File::HomeDir->users_home("$1")/e; $filename =~ s/^~/File::HomeDir->my_home/e; return $filename; } is(rep_tilde("~"), "/home/foo", "expect ~ -> /home/foo"); is(rep_tilde("~/"), "/home/foo/", "expect ~/ -> /home/foo/"); is(rep_tilde("~/.feeds"), "/home/foo/.feeds", "expect ~/.feeds -> /home/foo/.feeds"); is( rep_tilde("~/test/perl/perlmonks/691281/691281.pl"), "/home/foo/test/perl/perlmonks/691281/691281.pl", "expect ~/test/perl/perlmonks/691281/691281.pl " . "-> /home/foo/test/perl/perlmonks/691281/691281.pl" ); __END__ $ prove 691281.pl 691281....ok All tests successful. Files=1, Tests=4, 0 wallclock secs ( 0.05 cusr + 0.00 csys = 0.05 CPU)