Schrift
[thread]8220[/thread]

perl: leerzeilen entfernen (Seite 10)

Leser: 13


<< |< 1 ... 7 8 9 10 11 12 >| >> 114 Einträge, 12 Seiten
renee
 2006-08-10 17:11
#68651 #68651
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@sabrina: ja, das meinte ich mit generieren. Das Schlüsselproblem ist der Feldtrenner. Denn wenn Du den kennst, läuft mein Programm.

@Ronnie: ne, geht nicht. Wenn Du überlange Zeilen hast, verschwindet ein Teil:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/perl

use strict;
use warnings;

my ($name, $logon, $size);

format STDOUT =
@<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<
$name, $logon, $size
.

while(<DATA>) {
next if $. == 1;
chomp;
($name, $logon, $size) = split /\s{2,}/;
write;
}

__DATA__
Mailbox Last Logged on By Size (KB) Total Items Last Logon Time Last Logoff Time
Gehring Sabrina Domainname\sa8bw 32 016 85 5.7.2006 16:36 5.7.2006 16:36
Gehring Sabrina die erste von sechsen Domainname\sa8bw 32 016 85 5.7.2006 16:36 5.7.2006 16:36


Ausgabe:
Code: (dl )
1
2
3
C:\>format.pl
Gehring Sabrina Domainname\sa8bw 32 016
Gehring Sabrina die e Domainname\sa8bw 32 016
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/
renee
 2006-08-10 17:14
#68652 #68652
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=sabrina,10.08.2006, 15:11]@ronnie
hast du das getestet, also bei mir gehts leider nicht
1. steht "@<<<<<<<<<" fuer die belegeten plaetze des arrays oder?
wenn ich das erste "@<<<<" verlaengere dann kommen alle daten wieder aber ich muss es lang genug fuer den laengsten datensatz machen.
sieht dann ungefahr so aus
@<<<<<<<<<<<<<<<<<<<<<<&
amp;
amp;
lt;<<<<<<<<<<<<<<<<<<<<<&lt
;
;
;<<
warum passiert nicht bei den anderen zwei hab erst gedacht das erste steht fuer namen das zweite fuer logon usw.
[/quote]
Ist auch so
Quote
aber das erste steht fuer alles komisch?

Nein, da ist wieder das Problem mit den Feldtrennern. Ronnie geht hier auch von Leerzeichen aus, was aber definitiv nicht der Feldtrenner ist\n\n

<!--EDIT|renee|1155215689-->
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/
sabrina
 2006-08-10 18:00
#68653 #68653
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
@renee
kann es sein das "leerstellen", "tabulatoren" und "\" verwendet wurden. bin mir eigendlich sicher.
dann muss ich doch erst alle feldtrenner rausschmeissen,
das hatte ich schon, aber dann bekomme ich keine feldtrenner mehr rein.
du kennst nicht zufaellig einen trick?
ich glaub ich hab irgendwo gelesen das, das nicht geht.

ich koennte hochstens alle Feldtrenner durch einen eigenen ersetzen. kannst du mir ne seite sagen oder kennst du dafuer ein beispiel?

das muesste irgendwie so sein:
Code: (dl )
@matrix = split((/\t/,/\s/,/\/)/;/g);

mir ist schon klar das es so nicht funktioniert, gibt es so was in die richtung?
lg sabrina
sabrina
 2006-08-10 18:24
#68654 #68654
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
mach fuer heute feierabend hab geburtstag bis morgen
lg sabrina
renee
 2006-08-10 18:37
#68655 #68655
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wenn Du mehrere mögliche Feldtrenner hast, dann geht das so:
Code: (dl )
my @array = split(/[\t\s\/]/,$zeile);


Und noch herzlichen Glückwunsch und feier' schön...
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/
sabrina
 2006-08-11 11:56
#68656 #68656
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
@renee
danke schoen!

der cod ist ganz gut, so aehnlich hab ich ihn mir auch vorgestellt.
aber kann es sein, das er gleichzeitig auch loescht, oder in ne neue datei schreibt die nicht definiert ist? denn ich hab jetzt nur noch folgendes da stehen:
Code: (dl )
1
2
3
4
<<
<<
<<
<<

eigendlich ja richtig, hab aber auch schon probiert einfach ein zeichen in den code zu bauen, das nicht nur trennt sondern auch ersetzt
Code: (dl )
 @matrix   = split(/[\t\s\\]/;/, $zeile);

aber er sagt mir
Code: (dl )
1
2
syntax error  near "/[\t\s\\]/;"
search pattern not terminated


lg sabrina
sabrina
 2006-08-11 12:16
#68657 #68657
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
@renee
kannst du mir vielleicht sagen was genau die fehlermeldung aussagt?
lg sabrina
renee
 2006-08-11 12:23
#68658 #68658
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ersetzen funktioniert so:
Code: (dl )
1
2
my $string = "Dies ist ein Test";
$string =~ s/\s/;/g;


Du hast versucht, split und s/// zu mischen. Das funktioniert nicht.

In meinem Code wird auch nix gelöscht oder in irgendeine Datei geschrieben. Mein Code liest einfach nur die Datei aus und gibt die Informationen aus.
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/
sabrina
 2006-08-11 13:14
#68659 #68659
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
@renee
mein code sieht jetzt so aus :
Code: (dl )
1
2
3
4
5
6
7
8
9
 my $zeile;
 my @matrix = ();
 my @matrix = split(/[\t\s\\]/,$zeile);
 my $string = "@matrix";

foreach (@matrix) {
   $string = ~ s/^\s+\t\\/;/g; # fuehrende und
   s/\s+$\t\\/;/g; # abschliessende Blanks entfernen
} # foreach
und ich bekomme immernoch nur
Code: (dl )
1
2
3
4
  <<
<<
<<
<<

und er meckert nur in zeile 19 und die heisst
Code: (dl )
 my @matrix = split(/[\t\s\\]/,$zeile);  

sein kommentar
Code: (dl )
"my" variable @matrix masks earlier declaration in same scope at wichtig_blubb.pl line 19.

aber matrix ist doch declariert genau darueber
Code: (dl )
1
2
  my $zeile;
my @matrix = ();

lg sabrina
Ronnie
 2006-08-11 13:31
#68660 #68660
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
[quote=sabrina,11.08.2006, 11:14]und er meckert nur in zeile 19 und die heisst
Code: (dl )
 my @matrix = split(/[\t\s\\]/,$zeile);  

sein kommentar
Code: (dl )
"my" variable @matrix masks earlier declaration in same scope at wichtig_blubb.pl line 19.
[/quote]
dann lass das my an dieser Stelle doch weg, du musst ja nur einmal die Variable deklarieren.
<< |< 1 ... 7 8 9 10 11 12 >| >> 114 Einträge, 12 Seiten



View all threads created 2006-08-07 10:33.