echo 'abbc' | perl -pe "s,b,{print \"-\"},ge" # --a11c
echo 'abbc' | perl -pe "s,b,{\"-\"},ge" # a--c
1
2
echo 'abbc' | perl -pe "s,b,{if (1) {print \"-\"}},ge" # --a11c
echo 'abbc' | perl -pe "s,b,{if (1) {\"-\"}},ge" # a--c
1
2
echo 'abbc' | perl -pe "s,b,{if (1) {print \"<\"}; print \">\"; if (0) {print \"y\"}},ge" # <><>a00c
echo 'abbc' | perl -pe "s,b,{if (1) {\"<\"}; \">\"; if (0) {\"y\"}},ge" # a00c
echo 'abbc' | perl -?? "s,b,??,g??" # a<><>c
1
2
3
4
5
6
#!/bin/bash
echo 'abbc' \
| perl -pe \
"s,b,{if (1) {\"<\"}; \">\"; if (0) {\"y\"}},ge"
# Ausgabe: a00c
1
2
3
4
5
6
7
local n0="\s*?=\s*?(\"|')\s*"
cat "eineWebSeite.html" \
| perl -00pe \
"s,<link ([^>]*?rel$n0(.*?)\2)?([^>]*?title$n0(.*?)\5)?.*?(href$n0(.*?)\8).*?(/>|>(.*?)</link>|>([^<]*?)),\
{print \"~~~~~\$9\n\"; if (\$6) {print \"\t\$6\n\"}},ige"\
| perl -pe \
"s,^1+$,,g "
2023-07-09T18:49:58 micha2Dann empfehle ich, von Einzeilern mit -pe-Switches die Finger zu lassen. So wie der Code hier steht, eignet er sich eher für einen Verschwurbelungswettbewerb als für eine Lösung des Problems.Das sind meine ersten Versuche mit
Perl. Und mit RegEx habe ich auch noch wenig Erfahrung.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
use strict; use warnings; while ( my $line = <> ) { $line =~ s, <link ( [^>]*? rel \s*?=\s*?(["'])\s* (.*?)\2 )? ( [^>]*? title \s*?=\s*?(["'])\s* (.*?)\5 )? .*? ( href \s*?=\s*?(["'])\s* (.*?)\8 ) .*? ( /> | >(.*?)</link> | > ([^<]*?) ) , { print "~~~~ HREF: $9\n"; if ($6) { print " TITEL: $6\n"; } } ,xige; }
1
2
3
4
5
6
7
8
# z.b: perlskript liegt unter $HOME/bin und ist ausführbar markiert
# und PATH enthält $HOME/bin als Suchpfad
# mit überflüssigem cat
cat foo.html | perlskript | tee result.html
# ohne
perlskript foo.html | tee result.html
1
2
echo 'abbc' | perl -pe "s,b,{if (1) {print \"<\"}; print \">\"; if (0) {print \"y\"}},ge" # <><>a00c
echo 'abbc' | perl -pe "s,b,{if (1) {\"<\"}; \">\"; if (0) {\"y\"}},ge" # a00c
1
2
3
4
$ echo 'abbc' | perl -wpe 's,b,{if (1) {"<"}; ">"; if (0) {"y"}},ge'
Useless use of a constant ("<") in void context at -e line 1.
Useless use of a constant (">") in void context at -e line 1.
a00c
1
2
echo 'abbc' | perl -Mstrict -wpe 's,b,my $replacement=""; if (1) {$replacement.="<"}; $replacement.=">"; if (0) {$replacement.="y"} $replacement,ge'
a<><>c