Originariamente inviato da M4rko
Poi la scelta del linguaggio dipende sempre da cosa devi fare, dalla relativa preparazione, dai gusti, dalle mode, ecc.
Concordo.
Posto comunque quello il mio esercizio in perl, visto che lo sto studiando.
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";
}
}
Il test:
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