![]() | |
| | #1 (permalink) |
| Perl Programlama Üyelik Tarihi: 09/2004
Mesaj: 2,184
|
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. |
| | |
| | #2 (permalink) |
| Perl Programlama Üyelik Tarihi: 09/2004
Mesaj: 2,184
| 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"; } |
| | |
![]() |
| Bookmarks |
| Seçenekler | |
| |
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 |
| 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 | |