in reply to Re: File::Find complain about invalid top directory?
in thread File::Find complain about invalid top directory?

I tried your suggestion, but still face the same error message..

===============

use File::Find; use strict; my $path = "."; # default path my $num = 10; # -n default number of users my $num_flag = 0; my @paths ; # array to hold paths my $num_paths = 0; my @subpaths ; my $size = 0; foreach my $argv (@ARGV) { # if it matches dash if ( $argv =~ m/^-/ ) { $num_flag++; if ($num_flag > 1) { print STDERR "Cannot have more than one entry for number o +f users\n"; usage_exit(1); } $num = substr($argv, 1); print ("num is, $num\n"); } # if it matches slash or is a path if ( $argv =~ m/^\// ) { push @paths, <$argv/*> unless @ARGV; print ("argv, $argv\n"); print ("num_path, $num_paths\n"); $num_paths++; } } # set default path if no path argument is supplied if ($num_paths == 0) { @paths = <$path/*>; print ("assigning default path\n"); } my $i=0; foreach $i (@paths) { print ("atpaths, \n"); } my %size; my @sorted; find (sub { $size{$File::Find::name} = -s if -f || -l; }, @paths );

Replies are listed 'Best First'.
Re: Re: Re: File::Find complain about invalid top directory?
by rchiav (Deacon) on Apr 22, 2001 at 05:45 UTC
    I think I must have confused you here. your line:
    push @paths, <$argv/*> unless @ARGV;
    isn't doing what you want it to do. Change that line to just  push @paths, $argv; There's no reason to do any globbing there. Read up on push to see what it's doing.

    what you should do to assign the default path if none is specified is <code> push @paths, "." unless @paths; <code> That should replace your section where you check to see if the count == 0. This code will push "." onto @paths if there's nothing in @paths.

    Hope this helps..
    Rich