On Sun Feb 15 2009 @ 9:45, Octavian Râsnita wrote: > From: "John W. Krahn" <jwkrahn@shaw.ca> >> Kevin wrote: >>> Could someone please direct me to some web pages where I can go >>> through all deprecated perl functions and/or ways of writing perl >>> script? It is not easy for me to figure out whether an on-line >>> example is deprecated or not. I once saw: >>> >>> @files = <$path_to_directory> >>> >>> on the web and found it worked perfectly, then kept using this way of >>> writing my perl script. But I was told yesterday such a script is >>> deprecated now. >> >> AFAIK that is not deprecated. > > Can you explain how it works? > > I have tried the script below, and of course it doesn't print anything: > > use strict; > > my $path_to_directory = '/'; > > my @files = <$path_to_directory>; > > foreach my $file(@files) { > print "$file\n"; > } > > Thanks. > > Octavian Yup, I'm confused as well. At first, I thought it was the alternative way to write glob( $path_to_directory ), but not exactly. According to perldoc perlop, @files = <$path_to_directory > (note the extra space) will work as a glob, but otherwise, the interpreter thinks that you are trying to run readline on an unopened filehandle. Running a short test script with 'diagnostics' enabled, I get this: readline() on unopened filehandle $path at files line 7 (#1) (W unopened) An I/O operation was attempted on a filehandle that was never initialized. You need to do an open(), a sysopen(), or a socket() call, or call a constructor from the FileHandle package. (Are you trying to call readline() on dirhandle $path?) So, I would also be curious to know what that construction is supposed to do. Thanks, TThread Previous | Thread Next