Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7688[/thread]

Regular Expression, Extraktion Skalarnamen: Regular Expression, Extraktion Skalarnam



<< >> 7 Einträge, 1 Seite
Gast Gast
 2006-02-09 12:27
#62776 #62776
Möchte aus einem Programm Skalarnamen extrahieren und suche einen reg. Expression - Ausdruck, der das macht. Bsp:

push (@output,"\nBlueprint provisioned at $time_blueprint .....: $blueprint_id (Type: $order_type)\nTBNFs provisioned for this blueprint .....: ");
if ( ($time_blueprint,$req_a,$blueprint_id) = m/^(\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d\.\d\d\d)\|.*\|.*\|($internal_req_id\D?) \|.+bluePrintId (\d+)$/ ) {


Die Namen wären dann:
$time_blueprint
$blueprint_id
$order_type
$req_a
$internal_req_id

Weiß mir jemand weiter?
renee
 2006-02-09 12:32
#62777 #62777
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
ungetestet...

Code: (dl )
1
2
3
4
5
6
push (@output,"\nBlueprint provisioned at $time_blueprint .....: $blueprint_id (Type: $order_type)\nTBNFs provisioned for this blueprint .....: ");

foreach my $line(@output){
my @vars = $line =~ /(\$\w+)/sg;
print $_,"\n" for(@vars);
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Taulmarill
 2006-02-09 12:35
#62778 #62778
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
bedenke, dass du dabei auch die namen von hashes und arrays bekommen kannst. z.b. bei $hash{key} oder $array[42].
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Crian
 2006-02-09 13:41
#62779 #62779
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
Und dass du ev. Variablennamen übersiehst. Man braucht vermutlich schon einen echten Parser, wenn man das korrekt lösen will.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Dubu
 2006-02-09 13:42
#62780 #62780
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Für das kleine Stückchen Code oben mag das noch funktionieren, aber im Allgemeinen geht es nicht ohne großen Aufwand.
- Man bekommt nicht nur Skalare, sondern auch Referenzen.
- Es wird das Quoting nicht berücksichtig. "$foo" enthält einen Skalar (oder eine Referenz), '$foo' oder "\$foo" enthält nur vier Zeichen. Was ist mit q{$foo}? Was ist mit dem (zugegeben pathologischen) q$foo$?
- Was ist mit ${foo}? Auch hier steckt $foo drin.

Wie heisst es noch? "Only perl kann parse Perl."
renee
 2006-02-10 00:33
#62781 #62781
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Vielleicht liese sich da was mit CPAN:PPI machen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2006-02-10 05:47
#62782 #62782
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Obwohl... es ist ja kein Perl, sondern ein ganz normaler Text...

Es ist (noch) unschön, aber damit kann man einiges erschlagen:
Code: (dl )
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
#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

my @results;

while(<DATA>){
$_ =~ s/'.*?'//sg;
my @scalars = $_ =~ /(?:(\$\w+(?:->)?(?:\[\$?\w+\]|{\$?\w+}))|(\${\w+})|(\$\w+))/g;
push(@results,{$. => [grep{defined}@scalars]});
}

print Dumper(\@results);

_ _DATA_ _
$foo
${foo}
$foo[2]
$foo{test}
$foo->{bar}
$foo->[5]
"$foo"
"$foo askjlksdf"
'$foo'
'asdkjlsdf $fool '
Dies ist eine $variable
eine $variable und noch "$eine" und '$keine'
und ne $referenz->{$key}


Wie immer an den Forums-Bug denken ()\n\n

<!--EDIT|renee|1139543873-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 7 Einträge, 1 Seite



View all threads created 2006-02-09 12:27.