WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Perl - Frage: Die Zweite... (http://www.wcm.at/forum/showthread.php?t=72629)

PredeX 07.10.2002 10:37

Perl - Frage: Die Zweite...
 
Code:

#!/usr/bin/perl -w

#Text anhand Whitespace aufteilen
while(defined($zeile=<>)){
  chomp $zeile;
  my @word = split( m/\s/, $zeile);

  foreach (@word){
    s/\W/ /g; #nichtwortzeichen in $_ entfernen
    next if $_ eq ' ';
    $hash{$_}++; #Wert um eins erhöhen
  }
 }

foreach(sort { $hash{$b} <=> $hash{$a} } keys %hash){
    print "$_ -> $hash{$_}\n";
  }

Was genau bedeutet: m/\s/ und s/\W /g ?? Wo find ich da eine Liste oder Erklärungen?


MfG
Sebastian Gabmeyer aka PredeX

PredeX 07.10.2002 11:29

Aja und da wäre noch was:

Code:

while(defined($zeile=<> )){
  chomp $zeile;

was wird durch das defined überprüft, sprich wie stellt er fest ab wann der Ausruck false ist?

Und...
Code:

  foreach (@word){
    s/\W/ /g; #nichtwortzeichen in $_ entfernen
    next if $_ eq ' ';
    $hash{$_}++; #Wert um eins erhöhen

Wieso wird $hash{$_}++ inkrementiert?? Is das notwendig, und wenn ja: wieso??

MfG
PredeX

mcs_ 07.10.2002 11:49

Re: Perl - Frage: Die Zweite...
 
Zitat:

Original geschrieben von PredeX
...
Was genau bedeutet: m/\s/ und s/\W /g ?? Wo find ich da eine Liste oder Erklärungen?
...


bin kein meister, aber ich glaub, \s bedeutet "whitespace", also leerzeichen und tab und zeilenumbruch.

\W bedeutet "kein zeichen" - der großbuchstabe bedeutet immer das gegenteil vom kleinbuchstaben.

_m3 07.10.2002 14:13

Re: Perl - Frage: Die Zweite...
 
Zitat:

Original geschrieben von PredeX

Was genau bedeutet: m/\s/ und s/\W /g ?? Wo find ich da eine Liste oder Erklärungen?

"perldoc -q regex"
"perldoc perlop"
Zitat:

\w Match a "word" character (alphanumeric plus "_")
\W Match a non-"word" character
Zitat:


Code:

while(defined($zeile=<> )){
  chomp $zeile;

was wird durch das defined überprüft, sprich wie stellt er fest ab wann der Ausruck false ist?

CTRL-D bzw. EOF (end of file)

Zitat:

Code:

  foreach (@word){
    s/\W/ /g; #nichtwortzeichen in $_ entfernen
    next if $_ eq ' ';
    $hash{$_}++; #Wert um eins erhöhen

Wieso wird $hash{$_}++ inkrementiert?? Is das notwendig, und wenn ja: wieso??

AFAIK zehlt er damit mit, wie oft ein wort vorkommt. Du koenntest auch einfach "= 1" hinschreiben.


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag