Perl, Divx, altyazı ve başının çaresine bakabilmek üzerine

0
sundance
Uzun zamandır izlemek istediğim, The Hustler'ı seyretmek için sonunda zaman bulabildim. Paul Newman'ın 1962'de başrolünü oynadığı bu film, yıllar sonra Color of Money'e de konu olacak Fast Eddie Felson'ın hikayesini anlatıyordu. Dahası Unix Junkie makalemde bahsettiğim insan modelinin belki de en iyi örneklerinden biriydi.

Fakat küçük bir problem vardı, filmindeki hiçbir dialoğu kaçırmamak için altyazıya ihtiyaç duyuyordum, fakat benim elimdeki film iki cd olmasına rağmen bulabildiğim yegane ingilizce altyazı üç cdlikti.

Durumdan vazife çıkartmaya zaten hazır bir FM sakini olarak, sıvadım kolları ve küçük bir perl betiki yazdım bu işi yapması için. Film hatırladığımdan bile güzeldi, ama böyle bir durumda bir beş, on dakika içinde problemi çözebilmek daha bile keyifliydi, GNU/Linux kullanıyor olmak keyifliydi :)
Öncelikle yapılması gereken, .sub formatındaki altyazıyı incelemek, yapısını anlamaktı.

{940}{1002}-Yes, sir.|-l got a little grease in this lining.
{1005}{1097}lt'll take a half-hour to check it.|You want me to fill her up, too?
{1105}{1172}-You better check the oil, too.|-Yes, sir.
Görünüşe göre oldukça basit bir yapısı var, her satır süslü parantezler içinde altyazının ekrana geldiği ve çıktığı kare numaralarını ve gösterilecek olan altyazıyı içeriyordu.
Bu yaptığımız işlemi biraz da örnek üzerinde göstermekte fayda var. Mesela elimdeki üç altyazı sırasıyla, thehustler1.sub, thehustler2.sub ve thehustler3.sub olsun.

thehustler1.sub
{940}{1002}-Yes, sir.|-l got a little grease in this lining.
{1005}{1097}lt'll take a half-hour to check it.|You want me to fill her up, too?
{1105}{1172}-You better check the oil, too.|-Yes, sir.
...
{62465}{62535}At that hour, you haven't got much choice.
{62577}{62655}Besides, l only live three blocks from there.


thehustler2.sub

{77}{112}Where do you live?
{147}{172}Around.
{185}{225}l know where you live.
...
Basitçe bizim yapacağımız 77'ye 62655 ekleyip, (ve bundan sonra gelen bütün numaraları da aynı şekilde öteleyip devam etmek.

(Tabi burada dikkatli FM okurları bunun problemin tamamını çözmeyeceğini, ikinci cdden üçüncü cdye geçiş sırasında sorun çıkacağını, ilk video cdsi bittiğinde altyazının bir kısmının eksik kalacağını, ikinci cd başlangıcında da bir ayarlama yapmak gerektiğini farkedecektir. Dahası tam doğru rakam 62655 değil bunun biraz daha fazlası (zira son altyazının ekrandan kaybolması ile bir sonraki cdnin başlangıcı arasında geçen muhtemelen bir miktar süre de olacaktır.

Fakat burda asıl önemli olan filmi güzelce seyretmek, ve bunu da işi fazla uzatmadan yapmak. Bu yüzden, her türlü durumu (iki cdlik altyazıyı tek cdye indirmek, tek cdlik altyazıyı iki cdye dağıtmak ve bunu n cd için yapmak) kapsayan daha iyi bir rutin programlamak için yarım saat daha uğraşmak yerine, rutini elle bir iki kopyala/yapıştırma yaparak tekrar çalıştırmayı tercih ettim.

Bilgisayar programlarında optimizasyon bir yere kadar, daha iyisi hayatta optimizasyon :)

sub_merger.pl
#!/usr/bin/perl 
#
#
$delta=62655; #bir onceki cddeki altyazinin son zamani
open (DOSYA,"thehustler2.txt")||die "Dosya okunamadı";
@sonraki= < DOSYA >;
close (DOSYA);
open (DOSYA2,">>thehustler1.txt")||die "Dosyaya yazamadım ";

foreach $satir (@sonraki){
        chop $satir;
        ($basla,$bitir,$yazi)=($satir=~ /{(.*)}{(.*)}(.*)/);
        print DOSYA2"{".($basla+$delta)."}{".($bitir+$delta)."}$yazi";
}

close (DOSYA2);


syntax highlighted by Code2HTML, v. 0.9.1

Şimdi programın neler yaptığına bakallım:

1-Öncelikle, ilk satır, her perl programında olan shebang, yani bu programı çalıştırmak için gereken yorumlayıcıyı işaret eden satır

4-Ardından delta değişkenini tanımladığımız satır geliyor. Delta değişkeni bizim iknci cddeki altyazıyı ne kadar öteleyeceğimiz bilgisini bize verecek, kısaca ilk cdnin sonundaki altyazının ekrandan çıktığı an referansımız.

5-Bu satırda, klasik olarak bir dosyayı okumak üzere açıyoruz ve eğer dosya açılamazsa hata mesajı veriyoruz.

6-Bu satıra thehustler2.sub dosyasının içeriğini @sonraki dizisine depoluyoruz ve ardından dosyayı kapatıyoruz.

8-Bu satırda ise thehustler1.sub dosyasının arkasına yeni dosyayı ekleyip devam etmek için thehustler1.txt dosyasını eklenebilir olarak açıyoruz.

10-Bu satırdan itibaren ana döngümüz başlıyor. Yapılacak iş basit, her satırdaki süslü parantezler içindeki sayıları alıp bunları sanki yeni bir cdnin altyazısı değillermiş gibi ötelemek. İlk satırda $satir değişkenine bir döngüden bir satır alıyoruz.

11-Satır sonunu sil

12-Asıl işi yapan satırımız, aslında bir miktar kendini açıklamakla birlikte, perl bilmeyenlerin perl okumasının zor olduğu (kimse fransızcanın, fransızca bilmeyenler tarafından okunmasının zor olduğundan şikayet etmez ama) tezinin temel dayanaklarından biridir.

Basitçe bu satırın yaptığı, sırasıyla iki süslü parantez içindeki sayıları alıp bunları sonra işlemek üzere $başla ve $bitir değişkenlerine atamak, son olarak da satırın geri kalanını $yazi değişkenine atamak.
Bunu yaparken de kullanılan yöntem süslü parantezler içinde (.*) aramak. Perl'de bunun karşılığı herhangibir karakter ve başka karakterler. Yani aslında bu düzenli ifade bütün karakter dizilerini kapsar, fakat düzenli ifadeler, nasıl derler, açgözlüdür :) Yani buldukları her özel karakteri kaparlar, burda da başa ve sona koyduğumuz süslü parantezler { } arasındaki bütün karakterler anlamına gelmektedir.

13-Bu satırda da yukarda bahsedilen öteleme işlemi yapılıp süslü parantezler içine yazılmakta ve ikinci dosyaya eklenmekte.

14-Döngü sona erdiriliyor.

16-İkinci dosyayı da kapatıp programdan çıkmak.

Betiğin şu haliyle yaptığı iş aslında iki cd için hazırlanmış bir altyazıyı, tek cdye uygun hale getirmek. Fakat temel mantık aynı olduğundan bu yöntemi kullanarak (tabi arada bir editörle bir miktar satır silip) önce ilk iki cdyi birleştirip bölmek, ardından bölünmüş kısımla üçüncü cdyi birleştirip, üç cdlik altyazıyı iki cdye uygun hale getirmek mümkün.

Daha önce de bahsettiğim gibi ahım şahım bir program değil, büyük ihtimalle Randal Schwartz pir'imiz bütün bu programı tek satırda halleder (sakın gülmeyin, hakkaten bunu yapabilir, tarihte örnekleri vardır) ya da Can Uğur Ayfer hocamız bir optimizasyona gidebilir.

Bütün bu meselede önemle vurgulamak istediğim ne Perl'de kolayca işinizi görebileceğiniz, ne de geek tarzı durumdan kendine vazife çıkartmanın bir hayat tarzı olduğu. Mesele, hemen her durumda insanın başının çaresine bakabilecek araçlara sahip olması ve illa da birilerinden bir çözüm gelsin diye beklemek durumunda olmamasının verdiği keyif.

Çook eskiden, ticaretin başlaması, insanların kendileri için sağladıkları ürünlerin (tahıl, giysi, silah kapkacak vs.) ihtiyaç fazlası olanlarını satmaları şeklinde olmuş. Fakat zamanla, teknolojinin ve üretim şekillerinin gelişmesiyle insanlar artık, değil kendi ihtiyaçları için, ülkelerinin bile ihtiyaç duymadığı ürünleri, başkalarının ve başka ülkelerin ihtiyaçlarını karşılamak için yapmaya başladılar.

Sonuç olarak günümüzde çok azımız, kendimiz için üretim yapıyor, yaptığımız şeyleri gündelik hayatımızda kullanıyoruz. Bunun yerine hemen hepimiz para için üretiyoruz ve o parayı kendimiz için kullanıyoruz. Belki de bu yüzden, emekli olan hemen herkes el işlerine, marangozluğa, bahçe düzenlemeye, balıkçılığa hatta vitraya merak salıyor. Çünkü yaşanan bu DOLAYLI hayattan illallah denilmiş durumda, daha basit, daha direkt yaşamanın bir yolu bu.

İşte ben bu kadar basit bir şeyden dolayı, Perl'de programlamayı, GNU/Linux kullanmayı seviyorum. Çünkü bir problem çıktığında, bir marangozun masanın ayağı eğrildiğinde düzelttiği gibi oturup, uğraşıp düzeltme imkanım var. Adam/gün ücretimin orda harcadığım emeğe fırsat maliyeti olarak eşit olmadığını söyleyenler çıkanlar illa ki olacaktır, ama ben o sırada gülümseyerek muhtemelen bunun gibi makaleler yazıyor olacağım.

In Perl we hack One !

KIVILCIM Hindistan
Sundance

Görüşler

0
mos
muhtemelen sen tam bu yaziyi ekliyorken ben de Bourne Supremacy filmini [imdb.com] izlemek uzere mplayer'imin play dugmesine basmisim.

simdi ben nasil hayiflanmayayim hm? benim filmimin de altyaziyla ilgili bir sorunu vardi, asenkrondu her satir oldukca rahatsiz edici boyutta..

ben naptim? 3-5 altyazi duzenleyici aradim, bir ikisini denedim, verim alamayinca amaaan diyip orijinal diliyle izledim..

sen naptin? tuttun kod yazdin! kiskaniyorum yahu :-)

grr

0
sundance
:)
Ben birara altyazı mevzularını iyice araştırmıştım, mplayer asenkron mevzusu konusunda (muhtemelen biliyorsundur) birçok imkan sunuyor.

Herşeyden önce, 25fps bir film var elinde ve 23.976 fps altyazı var diyelim. Bunu çözmek için, -subfps 23.976 diyip subtitleın fps'sini giriyorsun, onu filmin fps'sine uyduruyor.

Ama bazen, hem fps'ler farklı olabiliyor, hem de film yanlış kesildiğinden dolayı başlangıçta bir de öteleme farkı oluyor. Bu gibi durumlarda da yukardaki yöntemi kullanıp daha sonra da dinamik olarak film oynarken, z ve x tuşları ile (yanlış hatırlamıyorsam) altyazıyı ileri geri öteleyebiliyorsun, bunun bir de komut satırından girilen kısmı var.

Şimdiye kadar birçok mevzuda bunlar benim derdime deva oldu.
0
mos
evet ama benim altyazim dvdrip icindi, elimdeki filmse sinema cekimi garip bir divxti

altyazi sabit bir gecikmeyle gelse ala olurdu, ama once 1 saniye, sonra 3 saniye filmin ortalarinda 1-2 dakika geriden gelmesi pes ettirdi beni :)

iste boyle..

ama film hosuma gitti, bendeki kopyasini sildim, simdi dvdripini cekiyorum yani dolayli yollardan altyazi derdim cozulmus olacak ;-)
0
sundance
Bourne supremacy'nin dvdrip'i güzel ;)
0
FZ
Öncelikle bu güzel yazıyı İngilizce yazıp O'Reilly, newsforge gibi sitelere yollamadan önce anadilinde, FM camiası ile paylaştığın için teşekkürler! (*)

Bu yazı, belli bir felsefe doğrultusunda geliştirilmiş araçların onu kullananları nasıl şekillendirebileceğinin güzel örneklerinden biri. Neden? Çünkü teorik olarak aynı işi VBScript ile Windows 2003 Server ya da Windows XP gibi en bi modern (!) işletim sisteminde de yapmanız mümkün, ya da daha güzeli Windows ortamında da kolayca Perl kullanabilirsiniz. Ancak görüyoruz ki bu yazıya yol açan ruh hali, oluşum, vs. Linux ortamında ortaya çıkıyor ve bu durumun tek örneği bu makale değil, örnekler çoğaltılabilir. (**)

Makalenin bir başka önemli yanı da şu, son dört paragrafı saymazsanız makaleye sıradan bir teknik makale gözü ile bakabiliriz ama işte o bitiriş paragrafları bir fark yaratıyor. Konu sadece bir bilgi işlem problemine pratik bir programlama çözümü getirmek değil. Yazar burada mevzuyu sosyolojik ve ekonomik açıdan da ele alıp belli bir bağlam içine oturtuyor, hayat ile, yaşam tarzı ile ilişkisini kuruyor. Belki de günümüzde okuduğumuz teknik yazılarda, teknolojiyi ele alan romanlarda en çok eksikliği çekilen şey tam da bu. Belki de bu yüzden Neal Stephenson'dan Cryptonomicon, Snow Crash, vs. okumuş birine Dan Brown'ın Dijital Kale romanı çok çok çok yüzeysel geliyor. (***)

Son olarak şunu eklemek istiyorum, bu yazı bana Linux Gazette'in efsanevi yazarlarından Ben Okopnik'in mükemmel "Perl One Liner of the Month" yazı dizisindeki yazıları hatırlattı. Özellikle öyle bir kurgu söz konusu olduğunda teknik yazıların edebi bir tad kazandığını teslim etmek zorundayım! ;-) (****)

Umarım bu yazıyı okuyan FM üyeleri de benzer yazıları yazmak için motive ederler kendilerini, çünkü FM'nin bence tek anlamı, açılımı Fazla Mesai değil. Bence daha da önemli bir açılımı var: Fark yaratalıM.

Notlar:
*: Kıvılcım yabancı dildeki makaleleri:
http://www.oreillynet.com/articles/author/1157
http://os.newsforge.com/os/04/11/23/1933211.shtml

**: Diğer örnekler:
http://www.fazlamesai.net/modules.php?name=News&file=article&sid=2412
http://www.fazlamesai.net/modules.php?name=News&file=article&sid=2357
http://www.fazlamesai.net/modules.php?name=News&file=article&sid=1195
http://www.fazlamesai.net/modules.php?name=News&file=article&sid=2109

***: http://www.fazlamesai.net/modules.php?name=News&file=article&sid=2477

****: http://www.linuxgazette.com/authors/okopnik.html
0
lifesdkver0_1
sevgili FZ, ilgili ve hakkında bilgili olabileceğinizi düşündüğümden soruyorum: sık sık, aracın düşünme şeklini değiştirdiğinden dem vuruyorsunuz. bu etkileşimde düşüncenin mi, yoksa aracın mı daha etkin olduğunu kanıtlayabilen bilimsel bir çalışma var mı?
0
FZ
Doğa bilimlerinde kanıtlama olmaz, kanıtlama sadece matematikte ve mantıkta olur, öncelikle buna çok dikkat edelim. Fizikte, psikolojide, sosyolojide, ekonomide hiçbir şey ispatlayamazsınız, bir şeyleri ispatladığını iddia edip sinsiden entelektüel terör estirmeye çalışanlara hele de sosyal bilimlerde çok dikkat edin! ;-) Doğa bilimlerinde ve sosyal bilimlerinde olsa olsa olguları açıklamak için modeller ve teoriler geliştirirsiniz ve bunlar yanlışlanana, daha iyi açıklayıcılar bulunana dek hayatlarına devam ederler.

Evet sık sık aracın insanı etkilediğinden bahsediyorum ama sanırım bilgisayarlara göndermede bulunduğum için vizyon biraz kısır kalıyor. Daha geniş bir örnek vereyim: Yazı, bir tür araçtır. Yani kağıt, kalem ya da isterseniz taş tablet üzerine çubuk diyelim, böyle bir aracı kullanan bir insanla, toplumla, bu tür bir aracı bilmeyen, kullanmayan bir toplumun, insanın düşünme şekli, problem çözme şekli aynı olabilir mi?

Başka araçları da düşünebiliriz, araç gibi görmediğiniz şeyler: dil, müzik, vs. Çok küçük yaştan itibaren müzik ve birkaç yabancı dil eğitimi almaya başlayan çocukların yetişkin yaşa geldiklerinde algılama, iletişim kurabilme, problem çözme şekillerinde, bu tür bir eğitim almayanlara kıyasla farklar gözlenmiştir.

Konuyu daha özelleştirip bilgisayar alanına çektiğimizde yine karşımıza enteresan örnekler çıkıyor ki sundance'in yazısı ve benim onun altına yazdığım ilk yorumdaki referanslar birer örnek olarak ele alınabilir. Bilimsel çalışmalara gelince, yeni yeni ilgilenmeye başladığım bir konu ve çok fazla literatür taraması yapmadım ancak başlangıç olarak şu kitabı önerebilirim:

Dr. B. J. Fogg tarafından, Persuasive Technology: Using Computers to Change What We Think and Do.

Bununla ilgili kişisel günlüğümdeki şu adrese bakabilirsiniz:

İkna edici teknoloji: Captology: http://ileriseviye.org/blog/index.php?p=96

Araç ile düşüncenin çok da farklı olmadığını düşünmeye başladım. Bedenimiz, varlığımız nerede başlıyor, nerede bitiyor? Bununla yani araç insan etkileşimi ile ilgili önerebileceğim bir başka kitap da Natural Born Cyborgs. Bununla ilgili yorumlarımı ve dikkatimi çeken çalışmaları, bağlantıları yine kişisel günlüğümdeki şu adreste bulabilirsiniz:

http://ileriseviye.org/blog/index.php?p=85
0
murat09
Biz kuduralım burda yok sub2srt, yok Subtitle Workshop uğraşalım, bi de Türkçe altyazı sitesi açalım ellere inat, şimdi senin yaptığın iş mi yani sevgili Sundance :)
P.S: Makaleyi izniniz olursa VideoMetre'ye eklemek isterim, ne dersiniz?
0
sundance
Rica ederim ne demek, izin sizindir. Dahası, bu rutini biraz daha kolay müdahale edilebilir ve becerikli hale getirmeyi planlıyorum, yapınca onu da gönderirim.

0
murat09
Emeğinize sağlık....Ileriki makalenizi doğrudan sizde gönderebilirsiniz. Saygılar ve sevgilerimle...
0
malkocoglu_2
Kutlarim. Teknoloji kullaniminin boylesi, iste tam bir GUC egzersizidir. Aynen bu sekilde, aklimizla araclarimiza hakim olup etrafimizadaki dogaya/duruma hakim olmak icin variz. "Ah vah, bozuk bir durum var, ne yapayim, kader" denmemis, eldeki araclarla yaratici bir cozum bulunmus, ve is bitirilmis. Super.
0
tongucyumruk
Hmm.. özellikle şu satıra hayran kaldım:
($basla,$bitir,$yazi)=($satir=~ /{(.*)}{(.*)}(.*)/);
Acaba Python'da bunun bir muadili var mıdır? En iyisi ben bu kodu bir de Python'da yazayım, bakalım nasıl olacak.

Çok uzun zaman önce bir merak Perl öğrenmiştim. Tabii öğrenmek derken sadece yazım tarzı ve temel fonksiyonlarını öğrenmeyi kastediyorum. Sonra tabii kullanılmayan bilgi oplarak bir süre sonra uçtu gitti. En iyisi ben bir bilgi tazeleme moduna geçeyim.

Not: Bir Perl kodu için oldukça okunaklı olmuş, onun içinde ayrıca tebrik ederim.
0
sundance
Bildiğim kadarıyla benzer bir yöntem pythonda da var.

Aslında iyi hatırlattın, orayı biraz daha açıklamakta fayda var. Onu asıl yazıya ekleyeyim.

0
FZ
Bu tür acil metin işleme (text processing) işleri için Perl gerçekten de ideal araçtır. Küçük, pratik, basit, hızlı.

Okunaklı olma meselesine gelince, özel olarak karmaşıklaştırılmaya çalışılmadığı sürece Perl kodu temel Perl bilgisine sahip programcılar tarafından kolayca okunabiliyor. Hatta iddiam şudur: Randal'ın Learning Perl kitabını alın, 1 hafta boyunca çalışın, pratik yapın, sonra karşınıza çıkan herhangi bir Perl kodunu %90 olasılıkla gayet rahat okursunuz.

RegEx konusuna gelince, düzenli ifadeler şifreli yazı gibi görünmeleri ile meşhurdurlar ancak bunları çok daha okunaklı yazmak mümkün, Perl'deki /x modifier'ı ile RegEx ifadesini boşluklu ve birkaç satıra yayarak çok daha okunaklı şekilde yazmak mümkün, tabii RegEx içinde bir de değişken kullanırsanız okunurluğa daha da katkıda bulunursunuz:

http://www.perl.com/pub/a/2003/06/06/regexps.html

adresinde çok güzel örnekler mevcut. RegEx içine yorum satırları eklemek de mümkün olabiliyor bu sayede.

Bunun dışında Perl en karmaşık düzenli ifadeleri bile insan dilinde açıklama yeteneğine sahiptir. YAPE::Regex::Explain modülü ile elinizdeki RegEx ifadesine dair açıklama alabilir, ya da eğer isterseniz GraphViz::Regex ile herhangi bir RegEx ifadesini durum makinası (state machine) diyagramı olarak görüntüleyebilirsiniz:

http://www.perl.com/pub/a/2003/07/01/regexps.html?page=2

Dolayısı ile Perl kodu normalde çok okunaksız da sanki burada verilen örnekte ekstra bir çaba harcanmış okunaklı olması için gibi bir durum söz konusu değil. Sözdizim renklendirmesi yapan VIM ya da Emacs gibi modern editörleri kullanıyorsanız Perl gayet okunaklı, tıpkı makaledeki örnekte olduğu gibi.

Düzenli ifadelerle ilgili ciddi iş güç yapmak isterseniz ve görsel bir yardımcı araç isterseniz, o zaman da imdadınıza Common Lisp koşuyor. Hem MS Windows hem de GNU/Linux ortamı için Lisp ile geliştirilmiş RegEx Coach'u tavsiye ederim:

http://www.weitz.de/regex-coach/


0
tongucyumruk
Hmm... buyrun bakalım, size python ile perl'den daha okunaksız kod nasıl yazılır örneği...

#!/usr/bin/python

import sys
import re

delta = 62655
subre = re.compile("^{(.*)}{(.*)}(.*)")
print "n".join(["{%d}{%d}%s"%(delta+int(start),delta+int("0%s"%stop),data.strip()) for start,stop,data in [subre.match(l).groups() for l in sys.stdin.readlines()]])



syntax highlighted by Code2HTML [www.palfrader.org], v. 0.9.1

Gerçi bitiş süresi verilmeyen durumlarda biraz saçmalıyor ama idare edin artık...
0
malkocoglu_2
Perl programlari icin "write-only kod" derler. Herhalde bu duzenli ifadelerin karmasikligindan ileri geliyor. Fakat genelde yazdigim duzenli ifadeye sonradan gelip bakim yapmam pek gerekmiyor, eger birseyler bozuksa o parcayi tekrar sil bastan yaziyorum. Tam "write-only " durumu hakikaten! :)

Görüş belirtmek için giriş yapın...

İlgili Yazılar

Visual Perl, Visual Python

gencbeyin

Microsoft Visual Studio .NET için editör, grafik arındırıcı, dil deyimleri (regular expression) kontrolü ve XML Web servisleri programlama gibi özellikleri bulunan Visual Perl ve Visual Python 22.Ekim'de Los Angeles'da Active State'in kurucusu Dick Hardt tarafından Microsoft Professional Developers Conference'da ilan edildi. Yazıldıktan sonra her türlü platformda kullanılabilecek türden kod oluşturan geliştirme ortamı ilk üçüncü parti programlama dili paketi olarak nitelendirildi.

Windows için ideal Perl ortamı

sundance

Uzun zamandır Perl için Windows ortamında güzel bir Entegre Yazılım Geliştirme ortamı arıyordum, sonunda buldum Open Perl Ide

Gerek debug özellikleri ile gerekse editörünün sağladığı kolaylıklar ile gerçekten dört dörtlük bir Perl geliştirme ortamı, herkese tavsiye ederim.

Yeni Deascifier

anonim

15 senedir İngilizce klavye ile yazıyorum, ve fena alıştım. F klavyeye de, Türkçeleştirilmiş Q klavyeye bile alışacak vaktim ve isteğim yok. Eh dedim ben de, biraz beyin ve Perl kaslarımı çalıştırayım, ve şu işe kalıcı bir çözüm bulayım. Benim değişmeye niyetim yok, teknoloji bana yardım etsin.

Perl ile insanları dans ettirebilir misiniz?

FZ

Perl programlama dili ile doğaçlama program yapıp bunun sonuçlarını dinleyen insanların dans etmesini sağlayabilir misiniz? Alex Mclean, Hacking Perl in Nightclubs başlıklı fantastik makalesinde bu soruya olumlu yanıt verip işin nasıl yapılacağını anlatıyor.

Aklıma 1960´lı yıllarda tüm zamanların en fantastik müzikal deneyimlerine imza atan, IBM 7090 kullanarak müzik üreten Xenakis geliyor…

Kaynak: http://ileriseviye.org/blog/index.php?p=113

Perl Öğreniyoruz - 5

cayfer

1. bölüm 2. bölüm 3. bölüm 4. bölüm
regexp'ler (Regular Expressions)Sözlüğe bakınca
regular: düzenli, muntazam, kurallı, kurallara uygun ve düzenli
expression: deyim, ifade, tabir, anlatım ve dışavurum
karşılıklarını buldum. Bence ingilizce Regular Expression sözcükleri de bu bölümde anlatacağım konuyu tam olarak anlatamıyor; çünkü aslında kavram adını ABD'li matematikçi Kleen'in Düzenli Kümeler Cebiri (Algebra of Regular Sets) üzerindeki çalışmalarından alıyor.