On Tue, 4 Feb 2003, Wiggins d'Anconia wrote: > Arild Jensen wrote: > > I am trying to get the mtime of a bunch of files and directores. However, > > it fails after the first two files/dirs. I don't see why it should. I am > > an experienced sysadmin and a beginner Perl coder (obviously). > > > > Help. > > > > > > > > Source code: > > > > #!/usr/bin/perl -w > > > > use strict; > > use File::Find; > > use File::stat; > > > > find(\&syswanted, '/mnt/Backup'); > > > > ######################################################################### > > sub syswanted { > > my $current_mtime; > > > > print "File: $_\n"; > > $current_mtime = lstat($_)->mtime; > > print "MTime: $current_mtime \n"; > > > > > > } > > ######################################################################### > > # The end. > > I am curious if this is a bug in Perl's implementation of File::stat, > from the 5.8.0 perldoc File::stat: > > "As of Perl 5.8.0 after using this module you cannot use the implicit $_ > or the special filehandle "_" with stat() or lstat(), trying to do so > leads into strange errors." > > I realize you said you are using 5.6.1 but this seems rather strange, > you might consider trying the regular built-in stat/lstat. (Do you > really want lstat over stat, there were no symlinks in your list?) > > sub syswanted { > my $file = $_; > print "File: $file\n"; > $current_mtime = (stat($file))[9]; > print "MTime: $current_mtime\n"; > } > > perldoc -f stat > perldoc -f lstat > perldoc File::stat (see if there is a 'Bugs' entry in 5.6.1) > > Sorry I don't have a 5.6.1 install around I can test with....
Your suggested code produces almost the same results: # ./test2.pl File: . MTime: 1044452317 File: carbon.sysbu.2002-11-10.tar.bz MTime: 1037055058 File: carbon.ibu.2003-01-30.tar.bz2 Use of uninitialized value in concatenation (.) or string at ./test4.pl line 15.MTime: File: carbon.ibu.2003-01-29.tar.bz2 Use of uninitialized value in concatenation (.) or string at ./test4.pl line 15.MTime: File: carbon.ibu.2003-02-03.tar.bz2 Use of uninitialized value in concatenation (.) or string at ./test4.pl line 15.MTime: File: lithium.sysbu.2002-11-17.tar.bz MTime: 1037582013 File: lithium.sysbu.2002-11-17b.tar.bz MTime: 1037591100 File: carbon.ibu.2003-02-04.tar.bz2 Use of uninitialized value in concatenation (.) or string at ./test4.pl line 15.MTime: File: lost+found MTime: 1036964040 However, after installing Perl 5.8.0 from source, both scripts work fine. Looks like a 5.6.1 bug fixed in 5.8.0. Thank you very much for your help. -A -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]