my %fileInfo = find(...); sub wanted { ... $fileInfo{$fileName} = $fileName; return %fileInfo; } #### my %fileInfo; find(...); sub wanted { ... $fileInfo{$fileName} = $fileName; } #### my @fileNames; find(...); sub wanted { ... push @fileNames, $fileName; } #### my %fileInfo = func(); sub func { ...put stuff in %fileInfo... return %fileInfo; } #### my %fileInfo = func(); sub func { my %fileInfo; # Work with a local variable. ...put stuff in %fileInfo... return %fileInfo; # Return the local variable. } #### my %fileInfo; func(); sub func { # Work with a global variable. ...put stuff in %fileInfo... }