Leser: 2
![]() |
|< 1 2 >| | ![]() |
19 Einträge, 2 Seiten |
1
2
my %testar = ();
$testar{ 'reg1' } = { 'exp' => '\\/var\\/logs\\/logger\\/(\d*)\\/(\d*)', 'desc' => 2 };
print ("${ $testar{ 'reg1' }{ 'desc' } }\n");
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl -w
use strict;
# ein Teststring
my $string = "dies ist ein test";
# nummerierte Variable, die du ausgeben oder zwischenspeichern moechtest
my $desc = 2;
my @ausgabe = ($string =~ /^(dies) (ist) (ein) (test)$/);
# kurz strict 'refs' deaktivieren in einem eigenen Geltungsbereich
{ no strict 'refs'; print "${$desc}\n"; }
# Da Arrays mit 0 beginnen, musst du bei $desc minus 1 rechnen.
print "$ausgabe[--$desc]\n";
1
2
3
4
$testar{ 'reg1' } = {
'exp' => qr~\Q/var/logs/logger/\E(\d*)/(\d*)~,
'desc' => 2,
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl
use strict;
# besser aus -w, weil es nur auf den aktuellen scope geht;
# hier ist der scope die komplette datei.
# es gibt naemlich immer noch einige Module, die bei -w (globale warnungen an) warnungen
# produzieren; deshalb besser use warnings verwenden...
use warnings;
# nummerierte Variable, die du ausgeben oder zwischenspeichern moechtest
my $desc = 2;
...
# wofuer braucht man hier das no strict? und das ${$desc} ???
# Das gibt den dereferenzierten wert von $desc zurueck, und $desc ist eine
# zahl, keine referenz => ergo sinnlos
{ no strict 'refs'; print "${$desc}\n"; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
my %testar = (
'reg1' => {
'exp' => qr~\Q/var/logs/logger/\E(\d*)/(\d*)~,
'desc' => 2,
},
'req2' => {
'exp' => qr~...~,
'desc' => 1,
},
);
# entweder ueber ein explizites array:
my @fields = $string =~ $testar{req1}->{exp};
my $wantedField = @fields[ $testar{req1}->{desc} - 1 ];
# oder kuerzer, ohne das explizite array
my $wantedField = ( $string =~ $testar{req1}->{exp} )[ $testar{req1}->{desc} -1 ];
1
2
3
4
5
my %testar = (
'reg1' => qr~\Q/var/logs/logger/\E(?:\d*)/(\d*)~,
'req2' => qr~...~,
);
my ($wantedField) = $string =~ $testar{'req1'};
print (" $testar{ 'reg1' }{ 'desc' } \n");
1 2 3
my %testar = (); $testar{ 'reg1' } = { 'exp' => '\\/var\\/logs\\/logger\\/(\d*)\\/(\d*)', 'desc' => 2 }; print (" $testar{ 'reg1' }{ 'desc' } \n");
print (" ${$testar{ 'reg1' }{ 'desc' }} \n");
![]() |
|< 1 2 >| | ![]() |
19 Einträge, 2 Seiten |