use warnings; use strict; use Path::Tiny; use feature 'say'; use Data::Dumper; my $path1 = Path::Tiny->cwd; say "path1 is $path1"; my $title = $path1->basename; say "base is $title"; # script parameters my %vars = ( init_dir => $path1, title => $title, ); $vars{"grandfather"} = $vars{"init_dir"}->parent(); print Dumper(\%vars); print "vars-grandfather : ", $vars{"grandfather"}->basename, "\n"; print "vars-grandfather : ", $vars{"grandfather"}; __DATA__ path1 is C:/usr/pm base is pm $VAR1 = { 'init_dir' => bless( [ 'C:/usr/pm', 'C:\\usr\\pm', 'C:', '/usr/', 'pm' ], 'Path::Tiny' ), 'title' => 'pm', 'grandfather' => bless( [ 'C:/usr', 'C:\\usr' ], 'Path::Tiny' ) }; vars-grandfather : usr vars-grandfather : C:/usr