Perl’de Dosya ve Dizin İşlemleri II

Yazan: Faruk Enes | Tarih 14 Ağustos 2001 | Yorum  1 Yorum
BerbatKötüOrtaGüzelHarika Henüz puan verilmemiş
Loading ... Loading ...

Geçen ay hatırlayacağınız üzere, ile dizin işlemleri yapmış ve bir dizini okumayı, silmeyi ve yaratmayı öğrenmiştik.

Ancak 'ün elbette dosya işlemlerinde de, hızı ve kolaylığı kabul gören bir gerçeklik. Örneğin de bir dosya açılmak istenirse open() fonksiyonu yeterlidir.

Open() fonksiyonu, bir kaç değişik paremetre alabilir. Ancak genelde 4 parametre ile kullanılır.

< okumak
> yeniden yaratmak ya da yaratmak
>> ekleme yapmak ya da yaratmak.

Bir de bu parametrelerden hiçbiri kullanılmadığında okumak anlamına geliyor ve dosyayı okuyor. Örneğin bir dosya okumak için açılmak istendiğinde:

open(DOSYA,"$dizin/$dosya"); ya da
open(DOSYA,"<$dizin/$dosya");

şeklinde kullanılabilir. Dosyaların açılış şekli ise oldukça önemlidir. Zira büyük veri kayıpları, küçük bir paremetre yanlışlığından meydana gelmektedir. Bu sebeple hangi parametrenin ne yapacağı iyice düşünülerek atanmalıdır. Örneğin ">>" parametresi, bir dosyaya eklemek yapmak için kullanır. Bu parametre ile dosya açıldığında, direk dosyanın sonuna konumlanır ve yazma/ekleme işlemine son satırdan başlar. Ancak eğer o isimde bir dosya yoksa, bu parametre ile verdiğimiz isimde bir dosya yaratılmasını sağlarız.

En çok dikkat etmemiz gerekn konulardan biride ">" parametresidir. Bu parametre, bir dosyayı yaratır. Ancak eğer aynı dizinde aynı isimde bir dosyanız varsa, dosyanız daki bütün verilerinizi kaybedersiniz.

'de bir dosya okumak için çok çeşitli yollar vardır. Örneğin bir dosya satır satır da okunabilir, bir bütün halinde, de...

$satir = <FILE> #Sadece tek satırı okur ve değerini $satir değişkenine atar
@satirlar = <FILE> #Bütün dosyayı okur ve her satırı @satirlar dizisinin bir elemanı olarak atar.

Her dosyayı okuduğumuzda dosyayaı kapatmak mantıklı olmayacağında, satır satır okuma işleminde, bir döngü kullanmak daha mantıklıdır:

:
  1. while(defined($satir = )) {
  2. push(@satirlar,$satir);
  3. }

Bu şekilde bir okuma yaptığınızda satırları tek tek okumanız mümkün olabileceği gibi aynı zamanda, bir diziye atamak gibi işlemleride yapabilirsiniz. Kontrolü sevenler için bu yöntem daha iyi gibi görünüyor. :-)Ve de açılan bir dosya kapatılmak istenirse close() fonksiyonu kullanılır. Kullanım şekli close(DOSYA_TUTAMACI) şeklindedir:

close(DOSYA);

Peki ama dosyalar nasıl silinecek?

'de dosyalar unlink() fonskiyonu ile silinebilir. Kullanım şekli unlik(DIZIN/DOSYA) şeklindedir:

unlink($dizin/$dosya) or die("Dosya silinemedi",$!);

Perlde dizin ve dosya işlemleri için bu kadar fonksiyon yeterli. Zira, daha değişik okuma/silme/yazma fonksiyonları kafa karıştırmaktan öteye gidememektedir.

Geçen ay bir de dizin silerken içinin boş olacağından bahsetmiştik. O zaman bu kadar bilgi ile, bir dizininin önce içini boşaltan, sonra ise silen bir program yazalım.

:
  1. #!/
  2.  
  3. $dizin = 'C:\deneme';
  4.  
  5. opendir(DIZIN,"$dizin") or die("DIZIN açılamadı!",$!);
  6. while($dosya = readdir(DIZIN)) {
  7. unlink("$dizin/$dosya") or die("$dosya silinemiyor!",$!);
  8. }
  9. closedir(DIZIN);
  10.  
  11. rmdir("$dizin") or die($!);
  12.  
  13. print "content-type:text/html\n\n";
  14.  
  15. print "$dizin silindi";

Yazdır Yazdır | 262 Görüntülenme | Kategori: Diğer Diller | Trackback  Geri İzleme
Etiketler  Etiketler: , ,

Benzer Yazılar


Yorum Yap


(gerekli)

(gerekli,yayınlanmaz)




XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>