Leser: 23
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 @array = ('#----------','application = OVO3','user = oraovo3','','application = TST1','user = oratst3','#----------'); my @neu = ('application = OVO4','user = oraovo4','','application = TST2','user = oratst4'); print "alt: @array\n\n"; my $start = ''; for my $zaehl (0 .. @array) { if ($array[$zaehl] eq '#----------') { if ($start eq '') { $start = $zaehl + 1; } else { splice @array,$start,$zaehl - 1,@neu; last; } } } print "neu: @array";
2010-01-15T09:20:58 PerlAnfaengeres können beliebig viele Einträge zwischen den #----- stehen
2010-01-15T10:18:54 reneeÜber den Flip-Flop-Operator findet man hier etwas: http://reneeb-perlblog.blogspot.com/2010/01/der-fl...
2010-01-15T11:09:33 reneeDas "= 0" könnte man weglassen. Da hast Du Recht.
1 2 3 4 5 6 7 8 9 10 11 12 13
#!/usr/bin/perl use strict; use warnings; while( my $line = <DATA> ){ print $line if $line =~ /^START/ .. $line =~ /^STOP/;} __DATA__ Dies ist ein längerer Textmit vielen unnötigen Zeilen vor dem eigentlich Wichtigen. START Wichtiger Text über drei Zeilen STOP Und noch unwichtigeren Zeilennachher
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
#!/usr/bin/perl
$pfad = "/home/user/db_project/";
$datei_passwd= "/home/user/db_project/user";
$datei_parm= "/home/fadmuser/db_project/test";
open(SESAM, "<$datei_passwd") || die "Datei $datei_passwd nicht vorhanden!\n";
open(FileHandle,"<$datei_parm") || die "Datei $datei_parm nicht vorhanden!\n";
$flag = 0;
while ($zeile = <FileHandle>) {
if (($zeile eq "\#----------")&& ($flag == 0)) {
$flag = 1;
}
elsif (($zeile eq "\#----------")&& ($flag == 1)) {
$flag = 0;
}
print $flag.$zeile unless $flag == 1;
}
close SESAM;
close FileHandle;
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
#!/usr/bin/perl use strict; use warnings; #my @array = ('#----------','application = OVO3','user = oraovo3','','application = TST1','user = oratst3','#----------'); my @neu = ('application = OVO4','user = oraovo4','','application = TST2','user = oratst4'); #print "alt: @array\n\n"; my $datei_passwd = "user"; my $datei_parm = "test.txt"; open(my $sesam, '<', $datei_passwd) or die "$!"; # Lesend öffnen local $/ = "\n"; # Eingabeseparator setzen für Array my @array = <$sesam>; close $sesam; $_ =~ s/[\r\n]// for @array; # Alle Zeilentrennzeichen entfernen (ist unten hinderlich) my $start = ''; for my $zaehl (0 .. @array) { if ($array[$zaehl] eq '#----------') { if ($start eq '') { $start = $zaehl + 1; } else { splice @array,$start,$zaehl - 1,@neu; # Neuen Inhalt setzen last; } } } open (my $out, '>', $datei_parm) or die "$!"; # Schreibend öffnen print $out join "\n",@array; # Zeilenweise schreiben close $out; #print "neu: @array";
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
#!/usr/bin/perl # besonders für einen Anfänger ist es wichtig die beiden zu Nuzen. # Das verhindert ärgerliche Anfängerfehler, use strict; use warnings; my @data; { # "$/" ist der "Eingabeseperator" # er bestimmt was eine Zeile ist # "local" sorgt dafür, # dass die Variable nur im aktuellen Block (innerhealb eins "{...}") verändert wird. local $/="#----------\n"; # Alle daten aus den FileHandle DATA (s.u.) in das Array einlesen. @data=<DATA>; } # "join" fügt array zusammen print join("\n####################\n",@data); # Perl-Data-Bereich # Alles danach landet im speziellen Filehandle "DATA" __DATA__ text bla rababar #---------- application = OVO3 user = oraovo3 application = TST1 user = oratst3 #---------- text bla rababar