Device-CableModem-Motorola-SB4200
view release on metacpan or search on metacpan
lib/Device/CableModem/Motorola/SB4200.pm view on Meta::CPAN
HTML::TableParser->new(
[
{ id => 1.4, row => $list },
{ id => 1.5, row => $mac },
],
{ Decode => 1, Trim => 1, Chomp => 1 },
)->parse( $raw );
my $di = $list{dhcp_information};
$list{dhcp_information} = {};
foreach my $info ( split m{ \r?\n }xmsi, $di ) {
my($name, $value) = split m{ : \s+ }xms, $info;
my($num, $type, $other) = split m{ \s+ }xms, $value;
my $has_type = defined $num && defined $type && ! defined $other;
$list{dhcp_information}->{ $name } = $has_type
? { value => $num, type => $type }
: { value => $value }
;
}
my %rv = (
%list,
known_cpe_mac_addresses => [ @mac ],
lib/Device/CableModem/Motorola/SB4200.pm view on Meta::CPAN
{ id => 1.4, row => $down_row },
{ id => 1.5, row => $up_row },
],
{ Decode => 1, Trim => 1, Chomp => 1 },
)->parse( $raw );
foreach my $v (
\@up{ qw( frequency power_level symbol_rate ) },
\@down{ qw( frequency power_level signal_to_noise_ratio ) },
) {
my($value, $unit, $status) = split m{\s+}xms, ${$v};
${$v} = {
value => $value,
unit => $unit,
};
${$v}->{status} = $status if defined $status;
}
my %rv = (
upstream => { %up },
downstream => { %down },
lib/Device/CableModem/Motorola/SB4200.pm view on Meta::CPAN
my $cb_row = sub {
my ( $id, $line, $cols, $udata ) = @_;
push @logs, {
time => shift @{ $cols },
priority => shift @{ $cols },
code => shift @{ $cols },
message => shift @{ $cols },
};
my $cur = $logs[-1];
my($pn,$ps) = split m/\-/xms, $cur->{priority};
$cur->{priority} = {
code => $pn,
string => $ps,
};
$cur->{time} = undef if $cur->{time} eq '************';
return;
};
HTML::TableParser->new(
[
lib/Device/CableModem/Motorola/SB4200.pm view on Meta::CPAN
my $self = shift;
my $raw = $self->_get( $self->{page_help} );
my $v;
if ( $raw =~ m{<td.+?>(.+?version.+?)</td>}xmsi ) {
($v = $1) =~ s{<br>}{}xmsig;
}
else {
croak "Can not get version from $self->{page_help} output: $raw"
};
my %rv;
foreach my $vs ( split m/ \r? \n /xms, $self->_trim( $v ) ) {
my($name, $value) = split m/ : \s+ /xms, $vs;
($name, undef) = split m/ \s+ /xms, $name;
$rv{ lc $name } = $value;
}
my @soft = split m/ \- /xms, $rv{software};
$rv{software} = {
model => shift @soft,
version => shift @soft,
string => join( q{-}, @soft ),
};
return %rv;
}
sub _trim {
my $self = shift;
( run in 2.010 seconds using v1.01-cache-2.11-cpan-71847e10f99 )