--- garrett esperum <[EMAIL PROTECTED]> wrote: > Thanks! That helped, > This is what my script looks like now: > > #!/usr/local/bin/perl -w > > use strict; > use File::Path; > use File::Copy; > > my $file; > my $type; > my $currentLocation; > my $newLocation; > my $owner; > my $permissions; > open (MDATA, "meta-data") or die "Cannot open $!\n"; > while (<MDATA>) { > chomp; > ($file, $type, $currentLocation, $newLocation, $owner, $permissions) > = split /\t/; > forech $newLocation > if ( not -d $newLocation ); > mkpath($newLocation, $owner, $permissions) or die "Couldn't > make the target directory: $!\n"; > > > } > close MDATA > > And this is the error I get: > > Can't locate object method "forech" via package "www" (perhaps you forgot to > load "www"?) at ./creat > ion.pl line 17, <MDATA> line 1.
Aack! I just read the error message and didn't look at the code. There are a few other issues there. Here's my guess as to what you were looking for: #!/usr/local/bin/perl -w use strict; use File::Path; use File::Copy; open (MDATA, "meta-data") or die "Cannot open $!\n"; while (<MDATA>) { chomp; my ($newLocation, $owner, $permissions) = (split/\t/)[ 3.. 5]; foreach ( $newLocation ) { if ( not -d $newLocation ) { mkpath($newLocation, $owner, $permissions) or die "Couldn't make the target directory: $!\n"; } } } close MDATA I also wonder if you're misunderstand the use of mkpath(). From 'perldoc File::Path': File::Path - create or remove directory trees SYNOPSIS use File::Path; mkpath(['/foo/bar/baz', 'blurfl/quux'], 1, 0711); rmtree(['foo/bar/baz', 'blurfl/quux'], 1, 1); DESCRIPTION The "mkpath" function provides a convenient way to create directories, even if your "mkdir" kernel call won't create more than one level of directory at a time. "mkpath" takes three arguments: * the name of the path to create, or a reference to a list of paths to create, * a boolean value, which if TRUE will cause "mkpath" to print the name of each directory as it is created (defaults to FALSE), and * the numeric mode to use when creating the directories (defaults to 0777) The second argument is merely a boolean and not the owner. Also, you have File::Copy in your script, but you don't use it. Is this something you plan to use later? If not, having it in your script may confuse someone (namely, me :) Cheers, Curtis "Ovid" Poe ===== "Ovid" on http://www.perlmonks.org/ Someone asked me how to count to 10 in Perl: push@A,$_ for reverse q.e...q.n.;for(@A){$_=unpack(q|c|,$_);@a=split//; shift@a;shift@a if $a[$[]eq$[;$_=join q||,@a};print $_,$/for reverse @A __________________________________________________ Do You Yahoo!? Send FREE video emails in Yahoo! Mail! http://promo.yahoo.com/videomail/ -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]