package Init::Freebsd::RCConf::Line; use strict; use warnings; use Class::Std; { my %raw_line : ATTR( :get :set ); my %key : ATTR( :get :set ); my %value : ATTR( :get :set ); sub BUILD { my ( $self, $ident, $args_ref ) = @_; $raw_line{$ident} = $args_ref->{'line'} || ''; $self->parse(); } sub parse { my $self = shift; if ( $self->get_raw_line() =~ /=/) { my ( $key, $value ) = split( /=/, $self->get_raw_line(), 2 ); $self->set_key($key); $self->set_value($value); } else { $self->set_key(''); $self->set_value( $self->get_raw_line() ); } } sub print_line { my $self = shift; if ( $self->get_key() ne '' ) { return sprintf( "%s=%s", $self->get_key(), $self->get_value() ); } else { return $self->get_value(); } } } 1;