Concordo.Originariamente inviato da M4rko
Poi la scelta del linguaggio dipende sempre da cosa devi fare, dalla relativa preparazione, dai gusti, dalle mode, ecc.![]()
Posto comunque quello il mio esercizio in perl, visto che lo sto studiando.
Il test:codice:#!/usr/bin/perl # # === struttura origine, campi separati da '\n' === # [nome1] # descrizione=descrizione1 # comando=comando1 # # === struttura finale, campi separati dal ':' === # x y valore # ----------------------------- # 0 0 nome1 # 0 1 descrizione1 # 0 2 comando1 # ### file sorgente da utilizzare $file = "/home/cacao74/tmp/perl/elenco_comandi.txt"; ### apertura stream su file open (SORGENTE, "<$file"); ### lettura sorgente @sorgente = <SORGENTE>; ### chisura stream su file close (SORGENTE); ### array comandi @comandi = (); $idx = -1; $idy = -1; ### creazione matrice dati foreach $riga (@sorgente) { if ($riga =~ m/^\[.*\][[:space:]]*$/) { $idy = -1; $comandi[++$idx] = (); $riga =~ s/^\[(.*)\][[:space:]]*$/$1/; $comandi[$idx][++$idy] = $riga; } elsif ($riga =~ m/^[[:space:]]*.*[[:space:]]*=[[:space:]]*.*[[:space:]]*$/) { $riga =~ s/^[[:space:]]*.*[[:space:]]*=[[:space:]]*(.*)[[:space:]]*$/$1/; $comandi[$idx][++$idy] = $riga; } } ### output per mostrare cosa si è fatto foreach $record (@comandi) { print "@{$record}\n"; print "Lo stesso record mostrato verticalmente:\n"; for ($i = 0; $i < @{$record}; $i++) { print "\t$record->[$i]\n"; } }
codice:cacao74@winnie:~/tmp/perl$ perl -c array.pl array.pl syntax OK cacao74@winnie:~/tmp/perl$ perl -w array.pl nome_1 descrizione 1 comando 1 Lo stesso record mostrato verticalmente: nome_1 descrizione 1 comando 1 nome_2 descrizione 2 comando 2 Lo stesso record mostrato verticalmente: nome_2 descrizione 2 comando 2![]()
ciao


Rispondi quotando