Batch-Interpreter
view release on metacpan or search on metacpan
lib/Batch/Interpreter.pm view on Meta::CPAN
my ($opts, $line) = @_;
if ($opts->{skip}) {
$opts->{skip}--;
return;
}
# skip empty lines
$line =~ /\S/ or return;
$opts->{eol_re} and $line =~ s/$opts->{eol_re}/$1/;
return map $_ // '', ($opts->{delim_re}
? split($opts->{delim_re}, $line, $opts->{numvals})
: ($line)
)[@{$opts->{tokens}}];
}
my $re_quoted = qr/ \" (?:\\.|\"\"|[^\\\"])*+ (?:\"|$) /x;
my $re_quotesc = qr/ \^. | $re_quoted /xo;
my $re_string =
qr/ (?: $re_quotesc | \d(?!\>) | [^\<\>\|\&\(\)\"\^\s] )++ /xo;
lib/Batch/Interpreter.pm view on Meta::CPAN
$result eq 'next' or return $result;
}
} elsif ($mode eq 'lines') {
my $opts = unquote_token $cmd->{line_options};
$cmd->{echo} and $self->print_prompt('for ',
"/f \"$opts\" %$var in (", $list, ')'
);
my %opt;
(@opt{qw(eol skip delims tokens)}, my $usebackq) = (
undef, 0, "\t ", '1', 0
);
$opts =~ /\beol=(.)/i and $opt{eol} = $1;
$opts =~ /\bskip=(\d+)/i and $opt{skip} = $1;
$opts =~ /\bdelims=(.?[^\s]*)/i and $opt{delims} = $1;
$opts =~ /\btokens=(\d[\d,-]*+\*?)/i
and $opt{tokens} = $1;
$opts =~ /\busebackq\b/i and $usebackq = 1;
$opt{eol} and $opt{eol_re} =
qr/^([\Q$opt{eol}\E]+)\Q$opt{eol}\E.*+$/;
$opt{delims} ne ''
and $opt{delim_re} = qr/[\Q$opt{delims}\E]/;
my @token = map {
/^(\d+)\-(\d+)$/ ? ($1 .. $2) : ($_);
} split /,/, $opt{tokens};
if ($token[-1] =~ s/\*$//) {
# 1,* or 1*
$token[-1] eq '' and pop @token;
( run in 0.780 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )