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

Leerzeichen in Perl???

Leser: 1


<< >> 5 Einträge, 1 Seite
olruebe01
 2006-03-14 19:01
#63787 #63787
User since
2006-01-19
192 Artikel
BenutzerIn
[default_avatar]
Hallo,

folgende Zeile erzeugt einen EIntrag im Error-Log. Ich nehme an es liegt am Leerzeichen? Aber wie gehts richtig? Es sollen alle Leerzeichen geben _ ersetzt werden, wie sicher unschwer zu erkennen ist.

while ($ordner =~ / /) {$ordner=~ s/ /_/;}

Noch eine Frage: DIese Zeilen auch. Da ich kein VollProfi bin und noch in der Lernphase stcke, habe ich diese Zeilen fertig übernommen, verstehe Sie aber nicht. Wo kann der Fehler in diesen Zeilen liegen? Mir fehlt total der Ansatz, da mir dies noch eine zu hohe Schule ist.

$val =~ tr/+/ /;
-> Use of uninitialized value in transliteration (tr///) at imagetn.pl line 34
Dies dürfte das gleiche Prblem sein -> Leerzeichen???

Gleiche Meldung bei dieser Zeile.
$val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
Diese Zeile verstehe ich gar nicht...

Könnt Ihr mir helfen?

Schoma Danke :-)\n\n

<!--EDIT|olruebe01|1142355967-->
lichtkind
 2006-03-14 19:21
#63788 #63788
User since
2004-03-22
5680 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
besser als
Code (perl): (dl )
while ($ordner =~ / /) {$ordner=~ s/ /_/;}

ist auf jeden fall
Code (perl): (dl )
$ordner =~ tr/ /_/g;

weil er sonst doppelt ducht und tr bei sowas wesentlich schneller ist als s.

die fehlermeldug: -> Use of uninitialized value in transliteration (tr///) at imagetn.pl line 34

bezieht sich auf $val das zu diesem zeitpunkt undefiniert ist also niemals inhalt besessen hat. woran das liegt steht in deinem programm.
Code (perl): (dl )
$val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

das ist schon auch ziemlich hohe kunst. macht aber nichts weiter als bytes zu packen also hexadezimal zahlen in ihren bytewert konvertieren
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
renee
 2006-03-14 21:25
#63789 #63789
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
bei tr brauchst Du den g-Flag nicht. Es reicht ein tr/ /_/...
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/
pq
 2006-03-15 11:06
#63790 #63790
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=lichtkind,14.03.2006, 18:21]besser als
Code (perl): (dl )
while ($ordner =~ / /) {$ordner=~ s/ /_/;}

ist auf jeden fall
Code (perl): (dl )
$ordner =~ tr/ /_/g;

[/quote]
perl -wle'$v =~ tr/ /_/g'
Bareword found where operator expected at -e line 1, near "tr/ /_/g"
Unquoted string "g" may clash with future reserved word at -e line 1.
syntax error at -e line 1, next token ???
Execution of -e aborted due to compilation errors.
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
 2006-03-15 11:13
#63791 #63791
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=olruebe01,14.03.2006, 18:01]folgende Zeile erzeugt einen EIntrag im Error-Log. [...]

while ($ordner =~ / /) {$ordner=~ s/ /_/;}
[/quote]
ja, welchen eintrag im log erzeugt sie denn, die zeile?
Quote
  $val =~ tr/+/ /;
-> Use of uninitialized value in transliteration (tr///) at imagetn.pl line 34
Dies dürfte das gleiche Prblem sein -> Leerzeichen???

prima, dass du diesmal daran gedacht hast, die meldung zu posten.
"Use of uninitialized value" heißt "Benutzung eines nicht initialisierten
Wertes". $val ist also nicht initialisiert. ("es steht nix drin" == "es ist undef")

Quote
Gleiche Meldung bei dieser Zeile.
 $val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

diese zeile ist nun (nach der tr/+/ / zeile) der zweite hinweis darauf, dass
dein skript händisch versucht, CGI-parameter zu parsen, obwohl das
schon seit jahren viel einfacher mit CGI.pm geht. in unserem wiki
findest du einige beispiele für CGI, bitte lies dir mal ein paar durch.
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
<< >> 5 Einträge, 1 Seite



View all threads created 2006-03-14 19:01.