Ceviz Forum

Geri Dön   Ceviz Forum > Programlama > Diğer Diller

Cevapla
 
LinkBack Seçenekler
Eski 11/06/2008, 02:44   #1 (permalink)
Perl Programlama
 
perlci Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 09/2004
Mesaj: 2,184
Varsayılan perl ile dosya ve dizin kopyalama

seda_gulberk sormuş ,bende aşağıdaki gibi bir örnek yaptım ve gerekli bir kaç açıklama ile verilen örneği açıkladım.

#!/usr/bin/perl
use File::Copy;
print "Content-type: text/html\n\n";

$kopyala="C:/vvvvvvvvvvvv/admin"; #kopyalanacak dizininin tam adresi
$hedef="C:/vvvvvvvvvvvv/hedefdizin2"; #hedef dizininin tam adresi
&dosya_tasi ($kopyala);
exit;

sub dosya_tasi {
local ($yol) = @_;
for (glob($yol."/*")) {
$sec=$_;
$sec =~ s/$kopyala//s; #kopyalalan dizini dosya bilgilerinden çıkar.

if (-d $_) {
mkdir($hedef.$sec); # seçilen hedef dizin olduğundan aynısını oluştur
dosya_tasi($_); # yeni dizin bilgilerini al.
} else {
print "$_\n"; # kopyalanan dosyalar
copy($_,$hedef.$sec) or die $!; # hedef sizine kopyalama işlemi
}

}
}



Bazı açıklamalar.

Perl ilebir dizinin içindeki bütün dosya adlarını dizin bilgisi ile birlikte almak için

@dosyalar = <*>;

yazmak yeterlidir.


print @dosyalar; dosyalrın listesinin elde edildiğini görebilirsiniz.

* işareti sıfır yada daha çok anlamına gelmektedir. Yani o dizinin herhangi bir dosya adı olabilir.


Bu şu anlama gelir.


C:/abc*/de*fg/j*

gibi bilinmeyen yada bu harfler arasında herhangi bir değer ile eşleşen dizin yolu anlamına gelir.


Buna bir örnek vermek gerekirse

$hedef='C:/abc';

for (glob("lib*perl*")) {
copy($_,$hedef."/$_");
print "Dosyaların tümü bu dizine kopyalandı: $hedef/$_\n";
}

lib ve perl dizinleri içindeki bütün dosyaları abc adlı dizine kopyalamış oluruz.


Burada kullandığımız glob() fonksiyonu ile <*> arasında hiçbir fark yoktur. Yani <"lib*perl*"> aynı anlama gelir.


Aşağıdaki örneği test edebiliriz. Bu örneği kullandığımızda bütün dosyalrın isimleri ile birlikte listelendiğini görebiliriz.

@dosyalar = <"lib*perl*">;
foreach $dosya (@dosyalar) {
print $dosya . "\n";
}


Perl ile dizin ve dosya işlemleri çok kolay biçimde yönetilebilir. Perlü diğer dillerden daha güçlü yapan en önemli özelliği budur. Perl bir raporlama dilidir ve sistem kayanklarını çok cimri bir şekilde kullanır.


PHP fonksiyon tabanı bir dil olduğundan bir yol bilgisinin dosyamı yada dizinmi olduğu fonksiyonlar ile test edilir.

Örneğin is_dir ,fonksiyonu belirtilen yolun bir dizin olup olamadığını test eder. Dsoyalar içinde aynı durum sz konusu, yani is_file() fonksiyonu ile belirtilen yolun bir dosya olup olmadığına karar verilir.

Perl de ise dosya operatörleri bu işi üstlenmiştir.

-d dizinmi? bilgisini test eder.
-f dosyamı? bilgisini test eder.

Örneğimizde biz eğer elde edilen dosya listesi içinde bir dizin varsa bunu if (-d $_) { ile test ettik ve eğer dizin ise süslü parantezlerin arasında ilk önce bu dizini hedef yol altına bir dizin olarak oluşturduk. Bunun içinde mkdir() fonksiyonunu kullandık.

Ardından fonksiyonumuzu tam bu satırda tekrar başa aldık ve belirtilen dizin yolu bilgisi ile birlikte o dizinin içindeki dosyaların listesini elde ettik.
Eğer bu listede yine bir yada birden fazla dizin varsa işlem her dizin için tekarar edecektir. Böylece bütün dizin ve dosyalrın elde edilmesi sağlanır.
__________________
eperl.net video
perlci hatta değil   Alıntı Yaparak Yanıtla
Eski 11/06/2008, 03:37   #2 (permalink)
Perl Programlama
 
perlci Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 09/2004
Mesaj: 2,184
Varsayılan

Düzeltme

verdiğim açıklamalarda yanlış anlaşılma olmaması için <C:/vvv*vv*vv/*> gibi dizin listeleme işlemlerinde tek yada çift tırnak kullanımı yoktur.Aceleyle yazdığım açıklamalarda tırnak koymuşum, bu nedenle düzeltme ihtiyacı duydum.

Kullanım şekli

@dosyalar = <C:/vvv*vv*vv/*>;
foreach $dosya (@dosyalar) {
print "$dosya\n";
}

glob() fonksiyonunda ise tırnak kullanmak gerekir.

foreach $dosya (glob("C:/vvv*vv*vv/*")) {
print "$dosya\n";
}
__________________
eperl.net video
perlci hatta değil   Alıntı Yaparak Yanıtla
Cevapla

Bookmarks

Seçenekler

Mesaj Yazma Hakları
Yeni mesajgöndermezsiniz
Cevap yazamazsınız
Dosya ekleyemezsiniz
Mesajınızı düzenleyemezsiniz

BB code is Açık
[IMG] kodu Açık
HTML kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Benzer Konular
Konu Konuyu açana göre Forum Cevap En Son Mesaj
dosya kopyalama shrewd C# 1 25/02/2008 16:35
dosya kopyalama phpasp C# 4 09/03/2007 12:06
Fso Dosya Kopyalama ermekem ASP 2 10/10/2006 22:08
Fso ile dosya kopyalama Darkwave ASP 1 01/11/2005 18:26
dosya kopyalama Raiden PHP 12 22/10/2004 16:40


Forum saati Türkiye saatine göredir. GMT +3. Şu anda saat 18:24.

Reklamlar & Desteklenenler
Hassas Valf | Hassas Kaplama | Antalyamız | Gazete | Ticari Bilişim | Hakan Müştak | Rüya Tabirleri | Kadın | Hastalıklar | Cepte msn ve e-posta | Webmaster | Antalya Aupair | Turkish Property Antalya | Forum | Chat | Perde | Adsl | Araba | bolindir.com | guncelle.com | livescore | Web Tasarım | evden eve nakliyat | forum | evden eve | sohbet | Resimcim| Kalifiye İnsan Kaynakları | Web Tasarım | Oyun | Yusuf KOÇ | Akın Yorulmaz | şiir | UFO | Web Tasarım | Oyunlar | Canlı Tv |


Forum Yazılımı: vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright ©2001 - 2008, Ceviz.net