in perl program need
use strictures 1; while(<>) { chomp; my($action, $v1, $v2) = map { s/xx/42/g; $_ } split /\s+/; print "=$action=$v1=$v2=\n"; do_someting( $action, func1($v1), func2($v2) ); }
the problem is, when input contains < 3 "fields" , want ensure nonexistent fields defined , contain "default". want next: input -> assigned output variables
"mk axxb ac" -> "mk" "a42b" "ac" "dexx ab" -> "de42" "ab" "default"
and on..
tried next, doesn't works.
my($action, $v1, $v2) = map { s/xx/42/g; $_ // "default" } split /\s+/;
it's looks i'm misunderstanding how map
and/or //
operator works.
split
never return undef
, //
return lhs.
if have different defaults,
my ($action, $v1, $v2) = map { s/xx/42/rg } split; $action //= 'default action'; $v1 //= 'default v1'; $v2 //= 'default v2';
if it's same default all,
my ($action, $v1, $v2) = map { s/xx/42/rg } split; $_ //= 'default' $action, $v1, $v2;
you have less repetition if used array instead of separate vars.
if have different defaults,
my @defaults = ('default action', 'default v1', 'default v2'); @fields = map { s/xx/42/rg } split; $fields[$_] //= $defaults[$_] 0..2;
if it's same default all,
my @fields = map { s/xx/42/rg } split; $fields[$_] //= 'default' 0..2;
Comments
Post a Comment