Schrift
[thread]9097[/thread]

Kann man arrays variabel aufrufen?



<< |< 1 2 >| >> 12 Einträge, 2 Seiten
perlcharly
 2007-06-18 17:36
#77607 #77607
User since
2007-01-05
11 Artikel
BenutzerIn
[default_avatar]
Hi, ich muss ein Script erstellen, das für Wörter (viele tausend) einen Index erstellt und dann noch einiges zusätzlich.
Als Zwischenschritt sollen zunächst mal alle Wörter des Textes je nach ihrem Anfangsbuchstaben in einen array, also alle Wörter mit "a" am Anfang in den array @a, alle mit "b" in @b usw.

Mir ist bisher nur eine überaus umständliche Lösung eingefallen, nämlich für jeden Buchstaben einen Befehl verwenden:

if (substr($wort,0,1) eq "a") { push (@a, $wort) };
if (substr($wort,0,1) eq "b") { push (@b, $wort) };
... usw.

Das ist viel Schreibarbeit und wenig elegant.

Gibt es eine Möglichkeit, arrays variabel anzusprechen? Also wenn der Anfangsbuchstabe des Wortes "a" ist, kommt das Wort in den array @a, .... bei "z" in den array @z ?

Bin für jeden Tipp dankbar!
#Kein Kommentar
 2007-06-18 17:44
#77608 #77608
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
erstelle die arrays doch einfach mit einer schleife.

Code: (dl )
1
2
3
4
5
6
7
8
foreach my $buchstabe (a..z) {
foreach my $zahlen (1..10) {
push (@$buchstabe, $zahlen);
}
}
print "$_) ", @$_, "\n" foreach (a..z);

my $ende = <STDIN>;
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
renee
 2007-06-18 17:45
#77609 #77609
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ja, verwende einen Hash mit Arrayreferenzen:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
use Data::Dumper;

my %hash;
my $key = substr $wort, 0, 1;
push @{$hash{$key}}, $wort;

print Dumper( \%hash );

print "Alle Worte, die mit 'a' beginnen: ", join " ", @{$hash{a}},"\n";
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/
#Kein Kommentar
 2007-06-18 17:46
#77610 #77610
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
natürlich kann man das auch mit hashs machen\n\n

<!--EDIT|#Kein Kommentar|1182174470-->
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
renee
 2007-06-18 17:49
#77611 #77611
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@#Kein Kommentar: schalte mal Wiki:[tt]use strict[/tt] ein...

Du hast Barewords drin und symbolische Referenzen sind nicht so toll.
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/
perlcharly
 2007-06-18 18:23
#77612 #77612
User since
2007-01-05
11 Artikel
BenutzerIn
[default_avatar]
Hi, danke für den Tipp!
Auf diese Fortgeschrittenen-Idee (bin noch Perl-Anfänger), dass push (@$buchstabe, $wort)
erlaubt ist, bin ich gar nicht gekommen!
pq
 2007-06-18 19:20
#77613 #77613
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=perlcharly,18.06.2007, 16:23]Hi, danke für den Tipp!
Auf diese Fortgeschrittenen-Idee (bin noch Perl-Anfänger), dass  push (@$buchstabe, $wort)
erlaubt ist, bin ich gar nicht gekommen![/quote]
du solltest es aber nicht tun, sondern renees vorschlag anwenden.
symbolische referenzen sind nicht zu empfehlen (nur in wenigen fällen,
z.b. wenn du die symboltabelle bearbeiten musst)
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
pq
 2007-06-18 19:22
#77614 #77614
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=#Kein Kommentar,18.06.2007, 15:46]natürlich kann man das auch mit hashs machen[/quote]
sollte man sogar. unter strict läuft dein code so eh nicht.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
#Kein Kommentar
 2007-06-18 19:57
#77615 #77615
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
ich weiß zwar nicht was an symbolischen referenzen so schlimm ist,
aber renee vorschlag ist wirklich eleganter
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
Linuxer
 2007-06-18 20:50
#77616 #77616
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Hm, reicht Eleganz denn nicht als Grund aus? ;o)

Naja, dazu fand Google im hiesigen Wiki folgende URL:

http://wiki.perl-community.de/bin....ennamen

Mangels Zeit hab ich das Ding selber noch nicht gelesen, aber ich gehe davon aus, dass das wesentliche dort erläutert ist....
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2007-06-18 17:36.