M
Mothra
Here's what I'm trying to do (kill off old Unix logins):
---------------------
$i=0;
while (<$who>) {
chomp($_);
my @line = split(/\s+/, $_); # Split it into an array
next unless ($line[5] eq "old");
push @{$oldsessions[$i]}, @line;
$i++;
}
---------------------
Which is fine unless you have strict pragma on, which i always do,
becuase then $i isn't locally defined within the loop. Is there a way I
can combine reading in the contents of $who with an incrementing $i all
within the same scope? Or is there a better way than using $i. Bear in
mind that @oldsessions is an array of annoymous arrays.
Here is the whole code to put it in context...
---------------------
use strict;
use IO:ipe;
my @oldsessions;
my $who=IO:ipe->new;
$who->reader('/usr/bin/who', '-u');
$i=0;
while (<$who>) {
chomp($_);
my @line = split(/\s+/, $_); # Split it into an array
next unless ($line[5] eq "old");
push @{$oldsessions[$i]}, @line;
$i++;
}
print "The following sessions are older than 24 hours:\n";
for($i=0; $i<=@oldsessions; $i++) {
print join(' ', @{$oldsessions[$i]}) . "\n";
}
print "Terminate them? (y/N): ";
chomp($a=<STDIN>);
unless($a eq "y"){
print "Exited without killing any sessions.\n";
exit(0);
}
$i=0;
for($i=0; $i<=@oldsessions; $i++) {
print "Killing $oldsessions[$i][0], Process ID $oldsessions[$i]
[6]" . "\n";
}
---------------------
$i=0;
while (<$who>) {
chomp($_);
my @line = split(/\s+/, $_); # Split it into an array
next unless ($line[5] eq "old");
push @{$oldsessions[$i]}, @line;
$i++;
}
---------------------
Which is fine unless you have strict pragma on, which i always do,
becuase then $i isn't locally defined within the loop. Is there a way I
can combine reading in the contents of $who with an incrementing $i all
within the same scope? Or is there a better way than using $i. Bear in
mind that @oldsessions is an array of annoymous arrays.
Here is the whole code to put it in context...
---------------------
use strict;
use IO:ipe;
my @oldsessions;
my $who=IO:ipe->new;
$who->reader('/usr/bin/who', '-u');
$i=0;
while (<$who>) {
chomp($_);
my @line = split(/\s+/, $_); # Split it into an array
next unless ($line[5] eq "old");
push @{$oldsessions[$i]}, @line;
$i++;
}
print "The following sessions are older than 24 hours:\n";
for($i=0; $i<=@oldsessions; $i++) {
print join(' ', @{$oldsessions[$i]}) . "\n";
}
print "Terminate them? (y/N): ";
chomp($a=<STDIN>);
unless($a eq "y"){
print "Exited without killing any sessions.\n";
exit(0);
}
$i=0;
for($i=0; $i<=@oldsessions; $i++) {
print "Killing $oldsessions[$i][0], Process ID $oldsessions[$i]
[6]" . "\n";
}