[EMAIL PROTECTED] wrote:
I've had to change the code as due to the earlier version of perl I am
running the open line would not work.
I found a workaround on the internet
use strict;
use warnings;
my $file = shift @ARGV || 'cpuuse.out';
my %fh = ();
if (-f $file and ! $fh{$file} ) {
open($fh{$file}, "<$file") || DisplayError();
# coolness ensues...
}
my @cpu;
while (<$fh>) {
my @data = split;
push @cpu, $data[4];
}
print sum(@cpu) / @cpu;
sub sum {
my $sum;
$sum += $_ foreach @_;
return $sum;
}
.... however I am getting zero values back and it is erroring
obviously about dividing by zero.
My input file looks like this.....
[snip]
This is the last part of my script I can't get working. Once this is
sorted you may never hear from me again, until the next script I
write :)
This is why it's important to understand code you're borrowing instead
of just copying it and hoping. The snippet you've copied is part of a
scheme to cache multiple file handles and reuse them if a file has
already been opened. Since you're opening only a single file this is
unnecessary and confusing for you. It's also important to take notice of
any error or warning messages that Perl is producing as John has already
pointed out.
If the Perl you're using will accept this open statement
open($fh{$file}, "<$file") || DisplayError();
then all you need to do is replace the three-parameter open in my
previous code
open my $fh, '<', $file or die $!;
with
open my $fh, $file or die $!;
and all should be well. Please try this and come back to this list to
say whether you have been successful.
HTH,
Rob
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/