Dear Monks, what I am missing? I have these 2 subrutines: if I run create_file a new file is created, but I if I run it after running the subrutine open_directory_file (which reads the files stored in a directory) the other subrutine gives me errors, namely that I am trying to write on close filehandle MYFILE. Why? Thanks
my $output_directory="TEMPORARY"; sub open_directory_file { print "Open files from directory...\n"; my @all_file_contents; my $Directory = File::Spec->canonpath( $mw->chooseDirectory() ); my $shortpath = Win32::GetShortPathName( "$Directory" ); chdir($shortpath) or die "$!"; opendir (DIR, "$shortpath") or die "$!"; my @files = grep {/.*?\.txt/} readdir DIR; close DIR; } sub create_file{ open (MYFILE, ">$output_directory/token.txt"); print MYFILE "ciao"; close (MYFILE); }
The working subrutine open_directory_file (thanks roboticus for the hint!)
my $output_directory="TEMPORARY"; sub open_directory_file { print "Open files from directory...\n"; my @all_file_contents; #added following line my $pwd = cwd(); my $Directory = File::Spec->canonpath( $mw->chooseDirectory() ); my $shortpath = Win32::GetShortPathName( "$Directory" ); chdir($shortpath) or die "$!"; opendir (DIR, "$shortpath") or die "$!"; my @files = grep {/.*?\.txt/} readdir DIR; close DIR; #added following line #go back to original directory chdir($pwd); }
In reply to TK filehandle path by welle
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |