summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Hemminger <stephen.hemminger@vyatta.com>2010-04-02 09:50:06 -0700
committerStephen Hemminger <stephen.hemminger@vyatta.com>2010-04-02 09:50:06 -0700
commitb68ac2b1969060ea6fa2f011a3107c83ad26e96d (patch)
tree095e7b1269f5413c72f97c5c7b19a4ee756f211c
parentc50d5766a919fa44642543bffa23d17986ee329c (diff)
downloadvyatta-cfg-b68ac2b1969060ea6fa2f011a3107c83ad26e96d.tar.gz
vyatta-cfg-b68ac2b1969060ea6fa2f011a3107c83ad26e96d.zip
Use opendir/grep to get rid of running ls/grep
Do file scanning in perl directly rather than using extra programs. Motivated by desire to get rid of perlcritic warning rather than any real performance issue.
-rwxr-xr-xlib/Vyatta/Keepalived.pm13
1 files changed, 7 insertions, 6 deletions
diff --git a/lib/Vyatta/Keepalived.pm b/lib/Vyatta/Keepalived.pm
index 437b055..403d385 100755
--- a/lib/Vyatta/Keepalived.pm
+++ b/lib/Vyatta/Keepalived.pm
@@ -164,17 +164,18 @@ sub intf_sort {
sub get_state_files {
my ($intf, $group) = @_;
+ opendir my $sdir, $state_dir
+ or die "Can't open $state_dir: $!\n";
+
my @state_files;
- my $LS;
if ($group eq "all") {
- open($LS,"ls $state_dir |grep '^vrrpd_$intf.*\.state\$' |");
+ @state_files = grep { /^vrrpd_$intf.*\.state$/ } $sdir;
} else {
my $intf_group = $intf . "_" . $group . ".state";
- open($LS,
- "ls $state_dir |grep '^vrrpd_$intf_group\$' |");
+ @state_files = grep { /^vrrpd_$intf_group$/ } $sdir;
}
- @state_files = <$LS>;
- close($LS);
+ close $sdir;
+
@state_files = intf_sort(@state_files);
foreach my $i (0 .. $#state_files) {
$state_files[$i] = "$state_dir/$state_files[$i]";