Perl script yardım

Bu konuyu okuyanlar

yusher

Müdavim
Katılım
30 Haziran 2008
Mesajlar
1,146
Reaksiyon puanı
12
Puanları
38
Merhaba arkadaşlar,

Perl'de data manipülasyonuna ihtiyacım var. Aşağıdaki girdiden çıktıyı elde edecek kodu perl dilinde paylaşırsanız sevinirim. Girdi formatı .txt. Çıktı formatı mümkünse .csv olabilir.

girdi :
counter1,date,value1
counter2,date,value2
counter3,date,value3

çıktı :
counter1,counter2,counter3
value1,value2,value3

Algoritma basit fakat perl bilmediğimden ilerleyemedim.

Algoritma : her satırın ilk virgüle kadar olan kısmını birinci satıra yaz. her satırın ikinci virgülden sonraki kısmını ikinci satıra yaz.


Yardımcı olabilecek biri çıkarsa çok memnun olurum.

Şimdiden teşekkürler.
 

marufcetin

Öğrenci
Katılım
8 Haziran 2012
Mesajlar
1
Reaksiyon puanı
0
Puanları
0
Perl'e yeni başladığımda böyle bir script görmüştüm.
Aklımda map ile yapıldığı kalmış.
Kodu yeniden oluşturdum, kısa bir kod.

Kod:
# ----------------------------------------
# satır satır girişler
$girdi = q~counter1,date,value1
counter2,date,value2
counter3,date,value3~;

# split ve map kullanarak stringi listeler listesine çevir.
@girdi = map { [ split /,/ ] } split /\n/, $girdi;

# ikili for dönügüsü ile matrisi 90 derece yatay çevir.
for(my $i = 0; $i < @{$girdi[0]}; $i++) {
    for (my $j = 0; $j < @girdi; $j++) {
        $cikti[$j][$i] = $girdi[$i][$j];
    }
}

# listeler listesini join ve map ile stringe dönüştür.
$cikti = join "\n", map { join ",", @$_ } @cikti;

print $cikti;
# ----------------------------------------
 
Üst