Schrift
[thread]9147[/thread]

anzeige von array-elementen



<< |< 1 2 >| >> 11 Einträge, 2 Seiten
bieber
 2007-07-02 09:53
#78121 #78121
User since
2007-06-18
148 Artikel
BenutzerIn
[default_avatar]
servus,


hab mal wieder ein kleines Problem mit nem array,

im array steht eine Textdatei die folgende Form hat
Code: (dl )
1
2
3
4
5
6
7
#blabla
#blubb
lalalla

#huhu
#
#hi


so ich will aber nun nur Zeilen anzeigen indenen "#TEXT" oder TEXT vorkommt, d.h. es müssen leerzeilen und nur "#"-Zeilen übersprungen werden

leider funktioniert mein Ansatz nicht, keine Ahnung wo mein Denkfehler ist



Code: (dl )
1
2
3
4
5
foreach(@datei){
next if $_ eq '#';
next if $_ eq '\n';
print $_;
}


dass das "\n" nicht geht ist mir schon fast klar, da das dokument aus windoof kommt, und da wohl was anderes für den Zeilenumbruch genutzt wird.... gibts da eine globale Möglichkeit neue Zeilen zu überspringen?! PS chomp habe ich bereits getestet, ohne Erfolg
Warum das überspringen des anderen nicht klappt.....keine Ahnung^^\n\n

<!--EDIT|bieber|1183357267-->
Es gibt immer Leute die meinen, sie seien schlauer als ich. Das Schlimmste ist, sie sind es auch.
Ronnie
 2007-07-02 10:01
#78122 #78122
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
1
2
next unless /#?\w+/;
print $_;

EDIT: Anpassung an Zeilen die Text enthalten aber nicht mit # beginnen.\n\n

<!--EDIT|Ronnie|1183357485-->
bieber
 2007-07-02 10:06
#78123 #78123
User since
2007-06-18
148 Artikel
BenutzerIn
[default_avatar]
danke funst ;)

armer ronny auch schon so früh wach wie ich^^

edit: das war jetz die umgekehrte Herangehensweise, gehts auch das man explizit sagt leerzeilen und #-Zeilen?!

nur der Neugier wegen^^

edit die 3.: @ronny......auf die zweite Lösung hätt ich auch mal selbst kommen können +argh+ ;), egal danke für die schnelle Hilfe\n\n

<!--EDIT|bieber|1183358318-->
Es gibt immer Leute die meinen, sie seien schlauer als ich. Das Schlimmste ist, sie sind es auch.
PerlProfi
 2007-07-02 10:59
#78124 #78124
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Nur um zu zeigen, dass es auch so geht, wie du zu erst gedacht hast:
Das mit dem \n hätte funktioniert, wenn du es in doppelte Anführungszeichen gesetzt hättest.
In einfachen ist es ja nichts weiter als ein \ und ein n.
Und falls die Zeilen gechompt sind müsstest du eben nicht auf \n prüfen, sondern auf einen Leerstring, falls nicht, muss an das # auch noch ein \n dran - natürlich wieder in doppelten Anführungszeichen.

Also so:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
# Zeilen nicht gechompt
foreach my $zeile (@datei) {
next if $zeile eq "#\n";
next if $zeile eq "\n";
print $zeile;
}

# oder: Zeilen sind gechompt
foreach my $zeile (@datei) {
next if $zeile eq '#';
next if $zeile eq '';
print $zeile;
}

Wenn du es andersherum haben möchtest kannst du eben ne anstatt eq benutzen.

MfG\n\n

<!--EDIT|PerlProfi|1183359609-->
bieber
 2007-07-02 11:27
#78125 #78125
User since
2007-06-18
148 Artikel
BenutzerIn
[default_avatar]
joar so bin ich eigentlich auch an die Sache heran gegangen (bis auf die doppelten ""), aber es funktioniert einach nicht!

habe beide Versionen von dir mal getestet, geht aber nicht


k....hab gerade mal die Datei auf dem Server geöfnet und gesehen das dort am Zeilenende immer ein ^M steht und kein \n
(Ursache: Datei liegt auf linuxhost, wird aber vorher von windoof importiert)

entfernt chomp das auch?!

wenn es nicht daran liegt dann ignoriere ich das einfach mal^^ die Lösung von Ronnie geht ja.......\n\n

<!--EDIT|bieber|1183361302-->
Es gibt immer Leute die meinen, sie seien schlauer als ich. Das Schlimmste ist, sie sind es auch.
renee
 2007-07-02 11:44
#78126 #78126
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=bieber,02.07.2007, 09:27]k....hab gerade mal die Datei auf dem Server geöfnet und gesehen das dort am Zeilenende immer ein ^M steht und kein \n
(Ursache: Datei liegt auf linuxhost, wird aber vorher von windoof importiert)

entfernt chomp das auch?![/quote]
Nein, außer Du veränderst $/ (siehe perlvar) vorher entsprechend. Da muss man aber aufpassen, weil $/ dann global geändert wird - außer man verwendet local...
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/
bieber
 2007-07-02 12:07
#78127 #78127
User since
2007-06-18
148 Artikel
BenutzerIn
[default_avatar]
mhh vieeeeeeeeeeeeel zu umständlich^^

also liegts an dem ^M, für perl ist es vorhanden sprich wenn ich nach nem leeren string überprüfe finder er ^M

aber bei einem print ist kein ^M mehr vorhanden!er gibt ne leere Zeile aus.....
Es gibt immer Leute die meinen, sie seien schlauer als ich. Das Schlimmste ist, sie sind es auch.
renee
 2007-07-02 12:17
#78128 #78128
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
^M == \r . Das ist ein nicht-druckbares Zeichen. Das ist auch bei der Ausgabe auf die Konsole vorhanden, aber man sieht es nicht.

Du kannst aber
Code (perl): (dl )
1
2
3
4
5
foreach my $zeile (@datei) {
   next if $zeile eq "#\r";
   next if $zeile eq "\r";
   print $zeile;
}

machen...
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/
bieber
 2007-07-02 12:30
#78129 #78129
User since
2007-06-18
148 Artikel
BenutzerIn
[default_avatar]
jupp super ;) das funktioniert

gut das der vi diese Steuerzeichen anzeigt^^ sonst hätt ich das doch nie gerafft

ihr seid ein Spitzenteam :), da wäre ich selbst nicht drauf gekommen

thread kann geschlossen werden\n\n

<!--EDIT|bieber|1183366606-->
Es gibt immer Leute die meinen, sie seien schlauer als ich. Das Schlimmste ist, sie sind es auch.
pq
 2007-07-02 12:44
#78130 #78130
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=bieber,02.07.2007, 10:30]threat kann geschlossen werden[/quote]
der thread, der hier gemeint ist, schreibt sich mit d und nicht mit t,
sonst hiesse es threat = drohung.
und warum schliessen? vielleicht hat ja noch jemand eine anmerkung?
threads werden hier eigentlich nur geschlossen, wenn eine diskussion
ausufert und/oder offtopic wird.
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
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2007-07-02 09:53.