nå ok, nu giver dit navn mening :) jamen tak så. Jeg har faktisk en anden udfordring, som har brug for lidt hjælp til. Er jo ret ny til Perl, så har ikke rigtig haft held med at finde de rigtige referencer for lignende problem.
Øh, nej, jeg har ikke rigtig fulgt med i hvad der findes af litteratur. Jeg kigger af og til på http://pleac.sourceforge.net/pleac_perl/index.html for inspiration, men man skal li'som vide noget om det på forhånd.
I Perl kan man gøre ting på mange måder. Dit problem kunne også løses med @b=$a=~/"(.*?)"/g; der laver et array, @b, med de matchende strenge. Så kan man bruge @b til udskrift eller andet, fx: print join(" - ",@b);
Tak for det. Løsningen til hele mit problem afhænger meget af Regex og Idiomer, så derfor vil jeg meget gerne have noget dokumentation der forklarer med eksempler osv. For (som nybegynder) det er ret svært synes jeg.
Men kernen er at jeg skal have fanget de karakter, som er inden for citationstegnene og hvis der er en semikolon lige efter eller lige før situationstegnet, skal de skilles med et space.
Altså fx "abcdef;" og ";1234" skal ændrest til "abcdef; " og " ;1234"
Indtil videre fanger jeg alle strings der er i mellem to " " og smider dem i en tekst fil. Men jeg ved ikke om jeg har valgt en rigtig strategi... Her er det styk fra koden so far:
my @files = glob("c:/TMP/test/test_*.csv");
foreach $file (@files){ open(INPUT,$file) or die; @input_array=<INPUT>; close(INPUT);
$input_scalar = join("",@input_array);
open (OUTPUT, ">>c:/TMP/test/insideQuotationmark.txt"); print OUTPUT "\nFile name:\n".$file."\n\n"; close(OUTPUT);
Jeg har faktisk fået løst det med at tilføje mellemrum :-)
Det er en txt fil hvor nogle steder er der en række værdier ind i " ". Her må en semikolon ikke stå først eller sidst, så derfor skal der være mellemrum, dvs. dette ";xyz" skulle gerne ændres til " ;xyz"
Jeg har løst det vha. subrsting, men nu knokler jeg med at skrive tilbage til original filen.
altså 1- jeg læser først fra minFil.txt 2- henter alle de strenge der er i mellem " " 3- tjekker for "; og ;" og tilføjer space i mellem 4- så skal lige præcis det der er ændret skrives tilbage i filen
Det er nr. 4 operation som jeg ikke kan komme videre med. Kan ikke lige se hvordan jeg kan smide de korrekte værdier tilbage i den samme fil igen uden at ændre andet.
koden til substring delen:
foreach $file (@files) {
### opens each trade_import file and puts them in an array
open(INPUT,$file) or die; @input_array=<INPUT>; close(INPUT);
$input_scalar = join("",@input_array);
open (OUTPUT, ">>c:/TMP/test/insideQuotationmark.txt"); print OUTPUT "\nFile name:\n".$file."\n\n";
det er ingen job, men et learn-by-doing projekt. Men Perl er helt sikkert et spændende sprog.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.