2009/3/4 Lauri Nikkinen <lauri.nikki...@iki.fi>: > Thank you for your post. That is quite there but not enough. See, I have > these directories and files in my C:\Perl\ folder > > Volume in drive C has no label. > Volume Serial Number is 248A-0894 > > Directory of C:\Perl > > 04.03.2009 19:18 <DIR> . > 04.03.2009 19:18 <DIR> .. > 03.03.2009 21:41 <DIR> bin > 03.03.2009 21:24 <DIR> cpan > 03.03.2009 21:40 <DIR> eg > 03.03.2009 21:42 <DIR> etc > 03.03.2009 21:41 <DIR> html > 03.03.2009 21:41 <DIR> lib > 03.03.2009 21:40 <DIR> man > 03.03.2009 20:23 <DIR> OmatPerlit > 03.03.2009 22:09 225 Print_directory_sizes.pl > 01.10.2008 18:00 <DIR> site > 04.03.2009 19:18 0 text.txt > 2 File(s) 225 bytes > 11 Dir(s) 28ÿ409ÿ733ÿ120 bytes free > > And I would like to write to script which prints into STDOUT (=cmd screen) > all the directories in this folder (C:\Perl\) and and their size. So the out > put should look like this: > > Directory bin: size xxx megabytes > Directory cpan: size xxx megabytes > Directory eg: size xxx megabytes > Directory etc: size xxx megabytes > ...and so on > > Even better, if I could print out all the subdirectories also. > > -L > 2009/3/4 Dermot <paik...@googlemail.com> >> >> 2009/3/3 Wagner, David --- Senior Programmer Analyst --- CFS >> <david.wag...@freight.fedex.com>: >> >> -----Original Message----- >> >> From: lauri.nikki...@gmail.com >> >> [mailto:lauri.nikki...@gmail.com] On Behalf Of Lauri Nikkinen >> >> Sent: Tuesday, March 03, 2009 11:38 >> >> To: Perl Beginners >> >> Subject: Printing directory sizes >> >> >> >> Hi, >> >> >> >> I'm trying to print directory sizes using script from >> >> >> >> http://coding.derkeiler.com/Archive/Perl/perl.beginners/2005-0 >> >> 8/msg00693.html >> >> >> >> and when I try it from the cmd.exe >> >> >> >> C:\Perl>perl Print_directory_sizes.pl "C:/Temp" >> >> >> >> but I get an error message saying >> >> >> >> use of uninitialized value.... etc. >> >> >> >> Where is the problem? I'm using Win XP. >> >> >> >> ---code--- >> >> #!/bin/perl >> >> >> >> use warnings; >> >> use strict; >> >> use File::Find::Rule; >> >> >> >> my $dir = $ARGV[0]; >> >> my $size; >> >> >> >> find( sub { -f and ( $size += -s _ ) }, $dir ); >> >> ---code--- >> > I took the code and removed the ::Rule and left the other and it >> > ran fine, but did not print anything. So I add a print statement for the >> > $size and it worked without any error msgs,etc and it gve the right >> > values. >> > >> > What actually happens when you run? Not just the use of uni.. >> > but all the output. >> >> I think what Lauri is after, is the accumulated total of all the files >> with a directory, something like this perhaps: >> >> #!/bin/perl >> use strict; >> >> use warnings; >> >> use File::Find; >> >> my $dir = shift; >> >> die "You must supply a full directory path" unless (-e $dir && -d $dir); >> my $total_size_of_files_in_dir; >> >> find(\&wanted, $dir); >> >> print "The total size of the file in $dir is >> $total_size_of_files_in_dir bytes\n"; >> >> sub wanted { >> if (-f $_) { >> $total_size_of_files_in_dir += -s; >> } >> } >> A recursive example might be a better tool though. >> Dp.
You seem to have changed the spec a bit. Perhaps you want the perl functions: opendir and readdir. The latter has an example of it's use. You can read how to use these function by type the command `perldoc -f readdir` Then you will want to accumilate the total for each file within a directory, use the -s switch as you did/saw in the earlier scripts. perldoc -f -X What I am afraid of doing here is all the work for you because I haven't seen an attempt by you to figure this out for yourself. If I recall from your original post, the first script you got off of the web. If you make an attempt with the functions mentioned above, I'll be glad to give you some guidence :) Dp. -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/