|< 1 2 3 4 ... 6 >| | 52 Einträge, 6 Seiten |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
while (<DATA>) {
chomp;
my @row = split /;/, $_;
@row = map { s/"//g; $_ } @row;
print Dumper \@row;
}
_ _DATA_ _
"Name von Firma1";1234567;"08001234567";"12"
"Name von Firma22";123;"08001234589";""
"Name Firma3";12345;"080012343";"12"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
foreach my $TABDATEI (glob("*.txt")){
 open (EINGABEFILE, "<$TABDATEI") or warn "Kann $TABDATEI nicht lesen!\n";
 open (AUSGABEFILE, ">$TABDATEI.neu.txt");
  while (<EINGABEFILE>) {
    chomp;
    # Split on single tab
    my @Fld = split(';', $_);
    foreach my $token (@Fld) {
      print AUSGABEFILE "$token\t"
      }
    print AUSGABEFILE "\n";
    }
 }
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
#! D:\Perl\bin
use Spreadsheet::WriteExcel::Big; # ben÷tigt IO::Stringy and OLE::Storage_Lite
my $Dateiendung=$ARGV[0];
unless (defined($Dateiendung)){
  print "Bitte Dateiendung angeben: ";
  chop($Dateiendung = <STDIN>);}
unless (defined (my $filename = glob("*.$Dateiendung"))){
  warn "Keine Datei zu verarbeiten!\nScript wird beendet.\n";
  sleep 5;
  die;}
#Ende der &âberpr³fung
$Dateiendung=~ m/([a-z_0-9]+$)/i;
foreach my $TABDATEI (glob("*.$1")){
  my $SHEETCOUNTER = 1;
  $TABDATEI=~ m/(^[^.]+)/i;
  print "verarbeite $TABDATEI\n";
  open (TABFILE, "<$TABDATEI") or warn "Kann $TABDATEI nicht lesen!\n";
  # Create a new Excel workbook
  my $workbook = Spreadsheet::WriteExcel::Big->new("$1.xls");
  my $worksheet = $workbook->add_worksheet();  # Sheet1
  # Row and column are zero indexed
  my $row = 0;
  while (<TABFILE>) {
    chomp;
    # Split on single tab
    my @Fld = split('\t', $_);
    my $col = 0;
    foreach my $token (@Fld) {
      $worksheet->write_string($row, $col, "$token");
      $col++;
      if ($col > 255) {
        warn ("Fehler! Maximale Spaltenzahl ³berschritten!\nScript wird beendet");
        <>;
        die;}
    }
    print STDOUT ("Arbeitsblatt $SHEETCOUNTER, Zeile $row\n");
    $row++;
    if ($row > 65535) {
      $row = 0;
      $SHEETCOUNTER++;
      $worksheet = $workbook->add_worksheet();
      }
  }
$workbook->close();
close TABFILE;}
exit;
1
2
3
4
5
6
7
8
9
10
11
12
open(DATEI, "<daten.txt") or die $!;
while (<DATEI>)
{
$tmp = $_;
$tmp =~ s/\"//gis; # Diese Zeile Entfernt alle "
my @Daten = split(';', $tmp); #Im Array @Daten sind jetzt alle Felder der aktuellen Zeile.
# Zugriff auf ein Element der Aktuellen Zeile ==> $Daten[1]
# Du kannst jetzt gleich in diesem schritt bearbeiten
# und durch ">>" anhängen Zeilenweise in eine neue Datei schreiben.
}
close(DATEI);
"Name """Firma3";12345;"080012343";"12"
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
#!/usr/bin/perl
use strict;
use warnings;
use Text::CSV; # oder Text::CSV_XS, falls vorhanden
my $csv = Text::CSV->new({sep_char => ';'});
my @AlleZeilen;
while (my $zeile = <DATA>) {
if ($csv->parse($zeile)) {
push @AlleZeilen, [ $csv->fields() ];
} else {
die "kann Zeile nicht parsen: " . $csv->error_input();
}
}
# Debug-Ausgabe
use Data::Dumper;
print Dumper \@AlleZeilen;
_ _DATA_ _
"Name von Firma1";1234567;"08001234567";"12"
"Name von Firma22";123;"08001234589";""
"Name Firma3";12345;"080012343";"12"
"Name Firma 4; Zusatz";234;"0800102030";""
"Name Firme ""Fünf"" ";987;"0900999999";"42"
QuoteDoppelte Anführungszeichen innerhalb eines Feldes, wie sie AndreasM angesprochen hat, werden bei CSV übrigens verdoppelt, womit Text::CSV und Text::CSV_XS auch zurecht kommen
|< 1 2 3 4 ... 6 >| | 52 Einträge, 6 Seiten |