|
|||||||||||||||||||||||||||
----- Original Message -----
From: "Anders Bruun Olsen" <sslug@sslug>
Newsgroups: sslug.perl
To: <sslug@sslug>
Sent: Thursday, November 29, 2001 12:10 PM
Subject: [PERL] Fjernelse af ^M
> Nu er det bare sådan at min input fil nogen gange kommer fra en dos
maskine
> hvilket resulterer i at min output fil har ^M for enden af hver linie..
> (faktisk er det ikke i enden da jeg skriver noget bagerst på de fleste
> linier) hvordan får jeg mit script til at fjerne dem før den skriver til
> filen?
Hejsa,
Det kan være du kan bruge det her script til noget, det er vist ca. en
ækvivalent til dos2unix tingen der (jeg kender den ikke)
#!/usr/bin/perl -w
use strict;
die "Usage: $0 <filename>\nLaver alle alle CRLF om til LF\n" unless @ARGV>0;
filerun: for(@ARGV){
my $ignorebackup=0;
if(!open(BKP,">$_~")){
print "Kan ikke oprette en backup af filen $_\nFortsæt
alligevel?[y/n]:";
my $svar=<STDIN>;
$svar=~s/\r?\n//;
$ignorebackup=1 if $svar=~/^y$/i;
next filerun unless $svar=~/^y$/i;
}
open(FIL,$_) or do{close(BKP); print "kan ikke læse filen $_\n";next
filerun;};
if(-f "$_.crlf"){
print "Den midlertidige fil($_.crlf) findes allerede -
fortsætter ikke med at lave crlf for $_\n";
close(BKP);
close(FIL);
next filerun;
}
open(NYFIL,">$_.crlf") or do {print "Kan ikke oprette en midlertidig
fil($_.crlf): $!\n"; close(FIL); close(BKP);next filerun;
};
for(<FIL>){
print BKP unless $ignorebackup;
s/\r?\n/\n/og;
print NYFIL;
}
close(FIL);
close(NYFIL);
close(BKP);
rename("$_.crlf","$_") || print "Kan ikke ændre i filen $_: $!\n";
unlink("$_.crlf");
}
|
||||||||||||||
|
||||||||||||||