1
2
3
4
5
$temp =~ s/Item 1/MessID1/;
$temp =~ s/Item 2/MessID2/;
$temp =~ s/Item 3/MessID3/;
&temp =~ s/Item 4/MessID4/;
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/perl -w
use strict;
use IO::All;
my $datei_in = '/home/ordner/test.csv'
my $datei < io("$datei_in");
my $z = 1;
my $ersetzung ='$temp =~ s/Item';
while($datei =~ s/^(.*)$/$ersetzung $z\/$1;/g) {$z++}
my $datei_out = $datei_in
$datei_out =~ s/\.csv/_geaendert\.csv/;
$datei >> io("$datei_out");
1 2 3 4 5 6 7 8 9 10
my @mess_ids = qw( MessID1 MessID2 MessID3 MessID4 ); for my $id (@mess_ids) { # und hier die Ersetzung }
2013-12-03T14:06:00 MuffiSuper :)
Nun sieht man auch, dass $datei_in ein ganz normaler string ist, da kannst du die "" beim laden und schreiben weglassen.
ansonsten: warum nicht sowas?
Code (perl): (dl )1 2 3 4 5 6 7 8 9 10my @mess_ids = qw( MessID1 MessID2 MessID3 MessID4 ); for my $id (@mess_ids) { # und hier die Ersetzung }
Das erspart das Code vorgenerieren.
edit:alternativ(war Quark)
1 2 3 4 5 6 7
... open(my $csv_fh, "<",$Datei_in) or die "...: $!"; my @csv_lines = map {chomp;} <$csv_fh>; my $temp = ...; # string in which "Item n" has to be replaced $temp =~ s/Item (\d+)/$csv_line[$1-1]/ge; # replace "Item 1" with $csv_line[0]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#! /usr/bin/perl use strict; use warnings; my @array = ( "1\n", "2\n", "3\n", ); print "Kontrolle 1: >>@array<<\n"; chomp(@array); # mach die "\n" weg... print "Kontrolle 2: >>@array<<\n";
2013-12-03T20:31:59 LinuxerKleiner Tipp: perlfunc chomp kann auch mit Arrays umgehen. Das spart den map Aufwand.