package Parse::Crontab::Entry::Env; use 5.008_001; use strict; use warnings; use Mouse; extends 'Parse::Crontab::Entry'; has _pair => ( is => 'ro', isa => 'ArrayRef', default => sub { my $self = shift; [split /=/, $self->line, 2]; }, auto_deref => 1, ); has key => ( is => 'ro', isa => 'Str', default => sub { my $self = shift; $self->_handle_kv($self->_pair->[0]); } ); has value => ( is => 'ro', isa => 'Str', default => sub { my $self = shift; $self->_handle_kv($self->_pair->[1]); } ); no Mouse; sub _handle_kv { my ($self, $str) = @_; my $org_str = $str; $str =~ s/^\s+//; $str =~ s/\s+$//; if (my ($quote) = $str =~ /^(['"])/) { $str =~ s/^$quote(.*)$quote/$1/; if ($str =~ /$quote/) { $self->set_error("value: $org_str is not valid."); return ''; } } $str; } __PACKAGE__->meta->make_immutable;