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

Eindeutige Abkürzungen identifizieren (Seite 2)



<< |< 1 2 >| >> 17 Einträge, 2 Seiten
esskar
 2005-01-07 19:36
#50628 #50628
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
oder efficient! :)

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use strict;

my %ShortToLong =("A"=>"Ambiente","Bed"=>"Bediener","Bl"=>"Blumen","K"=>"Kellner","Bel"=>"Beleuchtung");
my %LongToShort = reverse %ShortToLong;

sub checkit
{
my ($word) = @_;
return $ShortToLong{$word} || $LongToShort{$word} || "";
}

print checkit("A"),"\n";
print checkit("Blumen"),"\n";
print checkit("esskar"),"\n";
Dubu
 2005-01-08 02:09
#50629 #50629
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
@esskar: Lies noch mal den Thread. Dein Code liesse z.B. nicht "Bedien" zu, das aber korrekt sein soll.

@modur: Brauchst du wirklich diesen Hash? Wenn alle eindeutigen Abkuerzungen zulaessig sind, dann ergeben diese sich ja aus der Menge der Schluesselwoerter automatisch. Und dein Problem laesst sich dann mit CPAN:Text::Abbrev loesen. ;)

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl
use strict;
use warnings;
use Text::Abbrev;

my %woerter = abbrev qw/Ambiente Bediener Blumen Kellner Beleuchtung/;

for my $wort (qw/A Bed K Ke Kell Be Z/) {
   printf "%-10s => %s\n",$wort, ($woerter{$wort} || "- nicht definiert -");
}

_ _END_ _
A          => Ambiente
Bed        => Bediener
K          => Kellner
Ke         => Kellner
Kell       => Kellner
Be         => - nicht definiert -
Z          => - nicht definiert -
esskar
 2005-01-08 03:47
#50630 #50630
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=Dubu,08.01.2005, 01:09]@esskar: Lies noch mal den Thread. Dein Code liesse z.B. nicht "Bedien" zu, das aber korrekt sein soll.[/quote]
hab nach dem ersten post aufgehört zu lesen;
pq
 2005-01-09 16:35
#50631 #50631
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
oder CPAN:Tie::Hash::Abbrev
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
Dubu
 2005-01-10 01:17
#50632 #50632
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Ja, CPAN:Tie::Hash::Abbrev ist dann sinnvoll, wenn man eigentlich nicht die (unabgekuerzten) Woerter selber als Ergebnis haben will, sondern diesen Woertern Werte zuordnen.
Ishka
 2005-01-10 22:47
#50633 #50633
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Tie::Hash::Abbrev ist auch dann sinnvoll, wenn man viele, vor allem aber, wenn man lange Wörter hat. Sowohl den Bedarf an Rechenleistung, wie auch an Speicherplatz würde ich bei Text::Abbrev als extrem bezeichnen.
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
mordur
 2005-01-11 09:52
#50634 #50634
User since
2003-09-25
182 Artikel
BenutzerIn
[Homepage] [default_avatar]
...wobei ich für meine paar Wörter die grep-Variante bevorzuge. Man ist ja immer schnell bei der Sache und schmeisst mit Modulen nach dem fragenden User, aber der Aufwand ist manchmal einfach zu groß dafür, bzw. kann, darf man sie gar nicht installieren. Wenn ich z.B. an Kwiki denke oder an andere Module und was da noch für'n Rattenschwanz hintendran hängt... aber trotzdem gut es mal gehört zu haben.
<< |< 1 2 >| >> 17 Einträge, 2 Seiten



View all threads created 2005-01-07 14:09.