From: "Telemachus" <telemac...@arpinum.org>
On Sun Feb 15 2009 @  9:45, Octavian Râsnita wrote:
From: "John W. Krahn" <jwkr...@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, T


I was also thinking to glob and I have also tried using '/*' but it didn't work. I didn't knew that I need to leave an empty space before ">" but with it it works fine.

Octavian


--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to