/[pxelator]/lib/PXElator/shell.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /lib/PXElator/shell.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 204 - (show annotations)
Wed Aug 12 19:41:24 2009 UTC (14 years, 8 months ago) by dpavlin
File size: 831 byte(s)
added shell execution and output parsing
1 package shell;
2
3 use warnings;
4 use strict;
5
6 use autodie;
7 use Data::Dump qw/dump/;
8
9 our $command;
10
11 sub command {
12 ( undef, $command ) = @_;
13 __PACKAGE__;
14 }
15
16 sub lines {
17 my ( $self, $key ) = @_;
18
19 warn "command $command key $key";
20
21 my $info;
22
23 my @header;
24
25 my $split_re;
26
27 open(my $brctl, '-|', $command);
28 while(<$brctl>) {
29 chomp;
30
31 if ( ! $split_re ) {
32 $split_re = qr/\t+/ if m/\t/;
33 $split_re ||= qr/\s+/ if m/\s/;
34 }
35
36 my @cols = split( $split_re, $_);
37
38 if ( ! @header ) {
39 @header = @cols;
40 $info->{_header} = [ @header ] if $key;
41 next;
42 }
43
44 my $hash = { map { ( $header[$_] => $cols[$_] ) } 0 .. $#cols } ;
45
46 if ( $key ) {
47 my $k = $cols[$key - 1];
48 $info->{$k} = $hash;
49 } else {
50 push @$info, $hash;
51 }
52
53 }
54
55 warn $command, ' ', dump( $info );
56
57 return $info;
58 }
59
60 sub hash_by { lines(@_) }
61
62 1;

  ViewVC Help
Powered by ViewVC 1.1.26