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

Hash füllen

Leser: 2


<< |< 1 2 >| >> 12 Einträge, 2 Seiten
tuturutka
 2006-01-17 20:29
#61997 #61997
User since
2006-01-17
7 Artikel
BenutzerIn
[default_avatar]
Hallo,
ich bin Anfänger und solche Frage ist für euch sicher lustig, aber was soll's...irgendwann muss man anfangen :)
Mein Programm soll eine kontextfreie Grammatik aus einer Datei einlesen und in Hash speichern. Jede Zeile der Datei hat eine Regel der Grammatik in der Form ABC. Ich stelle es mir so vor, dass A der Schlüssel ist und der Wert ein Verweis auf eine Liste mit BC. Wie kann ich das machen?
Danke
bloonix
 2006-01-18 00:29
#61998 #61998
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Hallo tuturutka,

ich würde dir sehr gerne weiterhelfen, aber leider habe ich
nicht ganz verstanden was du meinst.

Kannst du vielleicht dein Vorhaben etwas näher beschreiben?
Hast du vielleicht ein paar Zeilen als Beispiel?

Greez,
opi
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
renee
 2006-01-18 01:04
#61999 #61999
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ist die Datei in BNF angegeben??

Code: (dl )
1
2
3
4
5
6
7
8
9
10
use Data::Dumper;
my %produktionen;
open(my $fh,"<",$grammarfile) or die $!;
while(my $line = <$fh>){
chomp $line;
my ($links,$rechts) = split(/\s*:\s*/,$line,2);
$produktionen{$links} = $rechts;
}
close $fh;
print Dumper(\%produktionen);
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/
nepos
 2006-01-18 10:22
#62000 #62000
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hast du mal ein Beispiel, wie eine Zeile deiner Datei aussieht?
tuturutka
 2006-01-18 22:41
#62001 #62001
User since
2006-01-17
7 Artikel
BenutzerIn
[default_avatar]
Also,wie gesagt, jede Zeile der Datei enthält eine Grammatikregel in der Form ABC, wobei A das Symbol auf ger linken Seite der Regel und B und C die Symbole auf der rechten Seite der Regel sind, oder eine Grammatikregel in der Form A "wort", wobei A ein Nichterminalsymbol und "wort" ein Terminalsymbol ist.Das Nichtterminal auf der linken Seite der ersten Regel ist das Startsymbol der Grammatik.
Bsp:
S NP VP
VP VP PP
VP V NP
:
:
N Frau
V sah
P mit
....
renee
 2006-01-18 22:51
#62002 #62002
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
use Data::Dumper;
my %produktionen;
open(my $fh,"<",$grammarfile) or die $!;
while(my $line = <$fh>){
chomp $line;
my ($links,$rechts) = split(/\s+,$line,2);
$produktionen{$links} = $rechts;
}
close $fh;
print Dumper(\%produktionen);
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/
Crian
 2006-01-19 11:10
#62003 #62003
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
vielleicht noch
Code: (dl )
$Data::Dumper::Sortkeys = 1;

für die schönere Ausgabe
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
tuturutka
 2006-01-19 11:47
#62004 #62004
User since
2006-01-17
7 Artikel
BenutzerIn
[default_avatar]
Hallo,
ich habe noch eine Frage. Kann ich in einem Hash mehrere  Werte mit dem gleichen Schlüssel speichern?
S NP VP
VP VP PP
VP V NP
PP P NP
NP NP PP
NP DT N
Sonst klappt es prima, aber Regeln mit gleicher linken Seite werden nicht berücksichtigt.
morph
 2006-01-19 11:56
#62005 #62005
User since
2007-12-06
79 Artikel
BenutzerIn
[Homepage] [default_avatar]
Oder die Werte werden überschrieben. Meines Wissens ist das nicht möglich. Die keys müssen eindeutig sein.

Wie wäre es die keys des Hashes als Referenz auf einen Array anzulegen? Geht sowas? Ich bin mir da nicht ganz sicher.

-uw
Dubu
 2006-01-19 12:06
#62006 #62006
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Code: (dl )
push @{$produktionen{$links}}, $rechts;

$produktionen{$links} ist dann kein Skalar mehr, sondern eine Arrayreferenz.
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2006-01-17 20:29.