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

regex für Umlaute (de, en, fr): Geht das auch besser? (Seite 2)



<< |< 1 2 3 4 5 >| >> 47 Einträge, 5 Seiten
Alex
 2004-12-26 20:15
#3894 #3894
User since
2003-12-04
285 Artikel
BenutzerIn
[default_avatar]
@pktm: danke nochmal für den Tipp das Ding funzt. Habe es jetzt so:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
my %sprache;
sub Sprache {

use HTML::Entities;
use sprache;

my $gewaehlte_sprache = "deutsch";

if ($gewaehlte_sprache eq "deutsch") {%sprache = sprache::deutsch()}
elsif ($gewaehlte_sprache eq "englisch") {%sprache = sprache::englisch()}
elsif ($gewaehlte_sprache eq "franzoesisch") {%sprache = sprache::franzoesisch()}
else {die qq(Konnte Sprachdatei nicht oeffnen: $!)}

# Umlaute und Sonderzeichen mit HTML::Entities in HTML-Schreibweise ersetzen

foreach my $key (keys %sprache) {

$sprache{$key} = encode_entities($sprache{$key});

}# foreach

}# Ende (sub Sprache)


Ist das schön? Würdet Ihr das anders machen? Mich stört ein bißchen, daß %sprache global ist. Aber geht wohl nicht anders... Muss erst wieder ein bißchen reinkommen...\n\n

<!--EDIT|Alex|1104085025-->
<center>Schönen Gruß, Alex
Mit dem Computer geht alles viel schneller - es dauert nur ein bißchen länger!
</center>
esskar
 2004-12-26 20:29
#3895 #3895
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
* use bitte außerhalb der sub; es werden sowieso zuerst alle subs gesucht und dann weiter interpretiert
* ich steh mehr auf englisch bei der Namensgebung (use language; ...)
* würde es nicht über einen gloaben hash machen, sondern ein package sprache mit new und get (ggf. noch ein get_ashtml) als funktionen ; diesem gibst du die gewollte sprache (german, english, ...) und das schlüsselwort und du erhälst das gesuchte wort; dann musst du auch nicht immer alle wörter encodieren, sondern nur die, die du brauchst!
Alex
 2004-12-26 20:44
#3896 #3896
User since
2003-12-04
285 Artikel
BenutzerIn
[default_avatar]
[quote=esskar,26.12.2004, 19:29]* würde es nicht über einen globalen hash machen, sondern ein package sprache mit new und get (ggf. noch ein get_ashtml) als funktionen ; diesem gibst du die gewollte sprache (german, english, ...) und das schlüsselwort und du erhälst das gesuchte wort; dann musst du auch nicht immer alle wörter encodieren, sondern nur die, die du brauchst![/quote]
Hhmm... - in meinen Worten:
Ich sollte für diese Funktion ein richtiges Modul schreiben, dass auch was kann... ... habe ich noch nie gemacht... ... ein Aufruf sollte dann etwa so aussehen(?) (Mal sehen ob ich ein bißchen mit OOP angeben kann obwohl ich es gar nicht behersche) ;):
Code: (dl )
1
2
3
use Sprache;
$s = new Sprache;
$s->get(-sprache=>$gewaehlte_sprache, -wort=>loeschen);

Meinst Du so?
<center>Schönen Gruß, Alex
Mit dem Computer geht alles viel schneller - es dauert nur ein bißchen länger!
</center>
esskar
 2004-12-26 20:51
#3897 #3897
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
wie wärs mit
Code: (dl )
$s->get($gewaehlte_sprache, 'loeschen');

?
Alex
 2004-12-26 21:02
#3898 #3898
User since
2003-12-04
285 Artikel
BenutzerIn
[default_avatar]
Scheint Dir Spaß zu machen mich knobeln zu lassen, was? ;) Habe mir gerade mal HTML::Entities angesehen, wie so ein Ding asusehen kann. Bastle gerade am Prototypen...
Eine Sache noch: Die Sprachauswahl wird anfangs über den Adminbereich in eine mySQL DBgeregelt. Später, wenn dass Ding dann halbwegs läuft soll es natürlich auch für die User möglich sein ihre bevorzugte Sprache zu wählen. Ist ja nicht schwer... ABER: der String $gewahlte_Sprache bleibt ja trotzdem immer noch global, kann ja nicht für jedes Wort die DB fragen in welcher Sprache es ausgespuckt werden soll. Bekomme ich diese Globale auch noch weg?
<center>Schönen Gruß, Alex
Mit dem Computer geht alles viel schneller - es dauert nur ein bißchen länger!
</center>
esskar
 2004-12-26 21:11
#3899 #3899
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ich benutze immer ein Hash-Obejct, dass ich jeder eigenen Funktionn mitgebe

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use CGI::Simple;
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);

use Db;

my $obj = {};

$obj->{-cgi} = CGI::Simple->new();
$obj->{-cgi}->parse_query_string();

$obj->{-dbh} = Db::ConnectToDb($obj);

&Check($obj);
&Handler($obj);


dort kannst du dir dann natürlich auch andere sachen merken!\n\n

<!--EDIT|esskar|1104088341-->
pktm
 2004-12-26 22:30
#3900 #3900
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
[quote=Alex,26.12.2004, 18:53][quote=pktm,26.12.2004, 18:29]Benutze doch einfach zum kontrollieren (wenn es dich beruhigt) Benchmark; :-)[/quote]
Hi hi, schon langsam lernst Du mich kennen! ;) Habe heute in der Arbeit etwa zwei Stunden die Threads hier darüber durchforstet. Bin mir nicht sicher ob das mit diesem Wissen schon anwenden kann. Habe es aber auch noch nicht ausprobiert. (Bin ja gerade am Module installieren, wie Du bemerkt hast...) ;)[/quote]
Bei meinem alten Script sieht es so aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
#!/Perl/bin/perl
use Benchmark; # Benschmark
my $t0 = new Benchmark;

# ... ganzer Rest

my $t1 = new Benchmark;
my $td = timediff($t1, $t0);
print "the code took:",timestr($td),"\n";
exit( 0 );

# ... subs


Im übrigen fällt mir gerade ein, guck dir mal das Modul CGI::Application an.
Das ist ein Framework für CGI-Applikationen (so wie mein CMS). Damit kann man schnell eine flexible, wiederverwendbare Lösung bauen und der Code bleibt auch bei mangelnder Strukturierung recht übersichtlich.
Wenn du ein Beispiel dafür sehen möchtest kannst du dir ja mal mein CMS runter laden ;-) :-D
mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
Alex
 2004-12-26 22:57
#3901 #3901
User since
2003-12-04
285 Artikel
BenutzerIn
[default_avatar]
So, mein "Modul" steht und es tut was ich will. :p
(Noch) nicht OOP - das kann ich (noch) nicht. Nächste Version...
Hier könnt Ihr kucken (Die Hashes habe ich gekürzt!):
Code (perl): (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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package sprache;

use strict;
use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION);
use vars qw(%deutsch %englisch %franzoesisch);
use HTML::Entities;

require 5.004;
require Exporter;
@ISA = qw(Exporter);

@EXPORT = qw(g_w);
@EXPORT_OK = qw(%deutsch %englisch %franzoesisch);

$VERSION = '0.01';

require HTML::Entities;

#################################################
# D E U T S C H
my %deutsch = (

#--[ N A V I G T I O N ]-------------------------

        home      &n
bsp;     =>    'Startseite',
        forum      &
nbsp;     =>    'Kontaktforum',
        kontakt     &nbsp
;      =>    'Kontakt',
        empfehlen     &nb
sp;  =>    'Empfehlen',
        impressum     &nb
sp;  =>    'Impressum',
        spiel      &
nbsp;     =>    'Spiel',

#--[ B U T T O S ]-------------------------

        submit      
      =>    'Absenden',
        reset            =>    'Löschen',
        
);
#################################################
# E N G L I S C H
my %englisch = (
        
);
#################################################
# F R A N Z O E S I S C H
my %franzoesisch = (
    
);

sub g_w { # g_w steht fuer get_wor(t/d)

    my ($sprache, $wort) = @_;
    if ($sprache eq "deutsch") { return encode_entities($deutsch{$wort}) }
    elsif ($sprache eq "englisch") { return encode_entities($englisch{$wort}) }
    elsif ($sprache eq "franzoesisch") { return encode_entities($franzoesisch{$wort}) }
    else {die qq(Konnte Sprachdatei nicht oeffnen: $!)}

}# g_w

1;

Ist das so richtig? Oder kann da noch eine ganze Menge Mist raus?

Mir ist deutlich aufgefallen, dass es wirklich länger dauert (und das lokal!) als die Hashversion vorhin, owohl ich da immer alles durch HTML::Entities gejagt habe. Aber pktm hat mir ja schon was zu bench gepostet. Gleich ein Frage: Wo exakt muss der untere benchcodeteil stehen? Am ende des scriptes, oder in der sub wo dann die Ausgabe gemacht wird? Werde ich gleich ausprobieren...
<center>Schönen Gruß, Alex
Mit dem Computer geht alles viel schneller - es dauert nur ein bißchen länger!
</center>
pktm
 2004-12-26 23:08
#3902 #3902
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Das "die" muss raus. Das gehört in das Programm.
Gib einfach undef zurück und schreibe in eine Datenstruktur im Modul den Fehler rein.
So kann man dann wie beim DBI-Modul den Fehler durch irgend etwas ähnliches wie errstr() ermitteln.

Dann solltest du dir einen Konstruktor zulegen.
Das hat bei mir etwas gedauert bis ich das ganz gerallt hatte wie das ging aber es ist recht nützlich.

Und lass diesen Exporter weg, der verschmutzt nur den Namespace deines Hauptprogrammes.

Soweit mein erster Eindruck.
mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
Alex
 2004-12-26 23:09
#3903 #3903
User since
2003-12-04
285 Artikel
BenutzerIn
[default_avatar]
the code took: 1 wallclock secs ( 0.25 usr + 0.00 sys = 0.25 CPU)
Das ist glaube ich gut... (na, ja ist ja auch noch noch nix außer 6 Wörtern - 1 wallclock sec für 6 Wörter - Hilfe, das Ding schläft ja!!!
<center>Schönen Gruß, Alex
Mit dem Computer geht alles viel schneller - es dauert nur ein bißchen länger!
</center>
<< |< 1 2 3 4 5 >| >> 47 Einträge, 5 Seiten



View all threads created 2004-12-26 00:24.