İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Script Programlama (Python, Ruby, Perl, Bash/Shell
Script Programlama (Python, Ruby, Perl, Bash/Shell

Perl script yardım

yusher06.01.20121 cevap2.731 görüntüleme
2008'den beri1.146 mesaj
#1
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.
Cevaplar
2012'den beri1 mesaj
#2
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.
# ----------------------------------------
# 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;
# ----------------------------------------

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.