xjlittle has asked for the wisdom of the Perl Monks concerning the following question:
This works ok for defining one directory. What I would like to do is give the users the ability to define more than one directory. Below is the complete code. Thank you for any suggestions. Johnwhile (<STDIN>){ File::Find::find({wanted => \&wanted}, $_); exit; }
#! /usr/bin/perl -w eval 'exec /usr/bin/perl -S $0 ${1+"$@"}' if 0; #$running_under_some_shell use strict; use File::Find (); print "In which directory do you want to search?\n"; # Set the variable $File::Find::dont_use_nlink if you're using AFS, # since AFS cheats. # for the convenience of &wanted calls, including -eval statements: use vars qw/*name *dir *prune/; *name = *File::Find::name; *dir = *File::Find::dir; *prune = *File::Find::prune; sub wanted; sub doexec ($@); use Cwd (); my $cwd = Cwd::cwd(); # Traverse desired filesystems while (<STDIN>){ File::Find::find({wanted => \&wanted}, $_); exit; } sub wanted { my ($dev,$ino,$mode,$nlink,$uid,$gid); (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) && (int(((-s _) + 511) / 512) > 10239) && doexec(0, 'ls','-la','{}'); } sub doexec ($@) { my $ok = shift; my @command = @_; # copy so we don't try to s/// aliases to consta +nts for my $word (@command) { $word =~ s#{}#$name#g } if ($ok) { my $old = select(STDOUT); $| = 1; print "@command"; select($old); return 0 unless <STDIN> =~ /^y/; } chdir $cwd; #sigh system @command; chdir $File::Find::dir; return !$?; }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Using a user input array with File::Find
by Bloodnok (Vicar) on Jun 28, 2009 at 01:17 UTC | |
by xjlittle (Beadle) on Jun 28, 2009 at 01:42 UTC | |
|
Re: Using a user input array with File::Find
by oko1 (Deacon) on Jun 28, 2009 at 01:12 UTC |