""Muma W."" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > joseph wrote: >> All, >> >> Just like to ask for correction on what's wrong with my script it gives >> spit out this error when i run it. >> >> Unsuccessful open on filename containing newline at disksize.pl line 8. >> Can't open file No such file or directory >> >> But it runs without this error whenever i feed it up when an existing >> file output by df-h. >> ex:## open(FL,"path/toactual/file") or die "blabalha"; >> Does this mean it can't trap the output of `df-h`? >> >> Here's the script### >> >> #!/usr/bin/perl >> >> use strict; >> use warnings; >> >> chomp(my $output_file = `df -h`); >> > > Df can return multiple lines. I'd suspect that your string $output_file > has several embedded newlines in it at this point. Chomp will only > remove that last (not embedded) newline. > >> open(FL,"$output_file") or die "Can't open file $!\n"; >> my @list; >> my %disk; >> my($label,$size,$use,$avail,$percent,$mounted,$partition,$usage); >> while(<FL>) { >> ($label,$size,$use,$avail,$percent,$mounted) = split(/\s+/, $_); >> push @list,$mounted,$percent; > > You might not need the intermediate list: > $disk{$mounted} = $percent; > >> } >> >> %disk =(@list); >> delete $disk{"Mounted"}; >> >> >> >> foreach (sort keys %disk) { >> my $value = $disk{$_}; >> print "\t $_ => $value \n"; >> } >> >> >> >> > > I'd do it like this: > > use strict; > use warnings; > use Data::Dumper; > > my %disk; > for (`df -h`) { > next if ! m{/}; > my($label,$size,$use,$avail,$percent,$mounted,$partition,$usage) = > split /\s+/, $_; > $disk{$mounted} = $percent; > } > print Dumper(\%disk); > > __END__ > > You'll notice that the backticks operator (``), in a list context, > returns a list containing each line as a separate list element. > > Since you only seem to need two elements from the list returned by > split(), you could change the two lines after the "m{/}" to this: > > my @list = split /\s+/, $_; > $disk{$list[5]} = $list[4]; > > HTH
Thank you, your way resemble with the first option John Krahn reply..i'm just late to close the thread due to timezone difference still i appreciate your effort. -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>