Volledige versie bekijken : Perl script doet raar :P



ultddave
24 November 2008, 16:21
Ik moest voor school een script schrijven dan een .txt file inleest en daarin alle aanhalingstekens vervangt door accolades.

Voorbeeld:

" Ik ben dave " wordt { Ik ben dave }

Deze code gebruik ik.
-------------------------
#!/usr/bin/perl -w
use strict;

open( IN, "voorbeeldje.txt" );
open( OUT, ">>voorbeeld.txt" );

my $line;

while ( $line = <IN> )
{
$line =~ s/\"/ \{/;
$line =~ s/\"/\}/;
print( OUT $line );
}

close ( OUT );
close ( IN );
-------------------------
Dit werkte perfect, iedere keer als ik het runde. Nu moest ik nog een regel toevoegen voor cijfers, die tussen aanhalingstekens stonden, niet tussen accolades te zetten.
Voorbeeld:
"1997" wordt 1997
zonder aanhalingstekens en zonder accolades. Dit deed ik, door middel van onderstaande regel toe te voegen. Waarbij ik alle combinaties van aanhalingstekens+ cijfers + aanhalingsteken, vervang door het cijfer.
$line =~ s/\"(\d+)\"/\1/;


Dit leverde het resultaat:

䙻圮*祄潳㭮䔠摤杮楴Ɱ䄠匮㬮䐠癡摩潳Ɱ䌠刮紮ਬ†楴汴⁥‽笠⁁敤整浲湩瑡潩景琠敨搠晥敬瑣潩景氠 杩瑨戠⁹桴⁥畳❮⁳牧癡瑩瑡潩慮楦汥⁤慭敤搠牵湩⁧桴⁥潴慴捥楬獰⁥景䴠祡㈠ⰹㄠ

Enzovoort op, geen idee waarom hij het naar deze rare tekens omzet? hij gaf eerst ook een error ivm binaire cijfers. Als ik die bovenstaande regel terug verwijder, dan blijft het probleem :s, ook al werkte hij ervoor wel ^^


Enig idee hoe dat komt? en hoe ik het kan oplossen? :d
Dank bij voorbaat
- Dave -

ultddave
24 November 2008, 20:14
nvm, bleek aan een fout van de Unicode te liggen. Alles in het bestand werd geplaatst onder een verkeerde code :s :P zonder reden ^^

- Dave -