From b68ac2b1969060ea6fa2f011a3107c83ad26e96d Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Fri, 2 Apr 2010 09:50:06 -0700 Subject: 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. --- lib/Vyatta/Keepalived.pm | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'lib/Vyatta/Keepalived.pm') 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]"; -- cgit v1.2.3