Win8 Strawberry 5.8.9.5 (32) Mon 08/16/2021 20:36:57
C:\@Work\Perl\monks
>perl -Mstrict -Mwarnings
use Data::Dump qw(dd);
for my $s (
'2021-08-16 foo a=bcd bar', '2021-08-17 foo a=bcd',
'2021-08-18 a=bcd', '2021-08-19 a=b',
'2021-08-20 a=', '2021-08-21 ', '2021-08-22', 'xyzzy',
) {
my $matched = $s =~
/(\d\d\d\d-\d\d-\d\d) .*(?:a=([a-z]+))?/ # .* greedy - fails all
# /(\d\d\d\d-\d\d-\d\d) .*?(?:a=([a-z]+))?/ # .*? lazy - fails some
# /(\d\d\d\d-\d\d-\d\d) (?:.*a=([a-z]+))?/ # works
# /(\d\d\d\d-\d\d-\d\d) (?:.*?a=([a-z]+))?/ # works
;
dd $s, $1, $2 if $matched;
# dd $s, $1, $2; # ???
}
^Z
("2021-08-16 foo a=bcd bar", "2021-08-16", undef)
("2021-08-17 foo a=bcd", "2021-08-17", undef)
("2021-08-18 a=bcd", "2021-08-18", undef)
("2021-08-19 a=b", "2021-08-19", undef)
("2021-08-20 a=", "2021-08-20", undef)
("2021-08-21 ", "2021-08-21", undef)
####
>perl -Mstrict -Mwarnings
use Data::Dump qw(dd);
for my $s (
'2021-08-16 foo a=bcd bar', '2021-08-17 foo a=bcd',
'2021-08-18 a=bcd', '2021-08-19 a=b',
'2021-08-20 a=', '2021-08-21 ', '2021-08-22', 'xyzzy',
) {
my $matched = $s =~
# /(\d\d\d\d-\d\d-\d\d) .*(?:a=([a-z]+))?/ # .* greedy - fails all
/(\d\d\d\d-\d\d-\d\d) .*?(?:a=([a-z]+))?/ # .*? lazy - fails some
# /(\d\d\d\d-\d\d-\d\d) (?:.*a=([a-z]+))?/ # works
# /(\d\d\d\d-\d\d-\d\d) (?:.*?a=([a-z]+))?/ # works
;
dd $s, $1, $2 if $matched;
# dd $s, $1, $2; # ???
}
^Z
("2021-08-16 foo a=bcd bar", "2021-08-16", undef)
("2021-08-17 foo a=bcd", "2021-08-17", undef)
("2021-08-18 a=bcd", "2021-08-18", "bcd")
("2021-08-19 a=b", "2021-08-19", "b")
("2021-08-20 a=", "2021-08-20", undef)
("2021-08-21 ", "2021-08-21", undef)
####
>perl -Mstrict -Mwarnings
use Data::Dump qw(dd);
for my $s (
'2021-08-16 foo a=bcd bar', '2021-08-17 foo a=bcd',
'2021-08-18 a=bcd', '2021-08-19 a=b',
'2021-08-20 a=', '2021-08-21 ', '2021-08-22', 'xyzzy',
) {
my $matched = $s =~
# /(\d\d\d\d-\d\d-\d\d) .*(?:a=([a-z]+))?/ # .* greedy - fails all
# /(\d\d\d\d-\d\d-\d\d) .*?(?:a=([a-z]+))?/ # .*? lazy - fails some
/(\d\d\d\d-\d\d-\d\d) (?:.*a=([a-z]+))?/ # works
# /(\d\d\d\d-\d\d-\d\d) (?:.*?a=([a-z]+))?/ # works
;
dd $s, $1, $2 if $matched;
# dd $s, $1, $2; # ???
}
^Z
("2021-08-16 foo a=bcd bar", "2021-08-16", "bcd")
("2021-08-17 foo a=bcd", "2021-08-17", "bcd")
("2021-08-18 a=bcd", "2021-08-18", "bcd")
("2021-08-19 a=b", "2021-08-19", "b")
("2021-08-20 a=", "2021-08-20", undef)
("2021-08-21 ", "2021-08-21", undef)