Kezdőoldal » Számítástechnika » Programok » Perlben hogyan lehet a tartalm...

Perlben hogyan lehet a tartalmazó folder összes folderét kilistázni (azaz azokat, amik a script mellett vannak), avagy egy tömbbe rakni?

Figyelt kérdés

2015. okt. 26. 14:35
 1/10 anonim ***** válasza:

#!/usr/bin/perl


use strict;

use warnings;


my $dir = $ARGV[0]; # target dir is read from command line.


opendir(my $DIR, $dir) or die $!;


while (my $file = readdir($DIR)) {


# We only want folders:

next unless (-d "$dir/$file");


print "$file\n";

}

2015. okt. 26. 15:18
Hasznos számodra ez a válasz?
 2/10 A kérdező kommentje:
az fontos lenne, hogy a foldert ne én adjam meg, hanem az a folder legyen automatikusan, amiben a script maga van
2015. okt. 26. 16:27
 3/10 anonim ***** válasza:
Amennyire tudom, a perl script nem tudja, hogy o hol fut (azt hiaba tudja, hogy neki mi a neve). Ha megmondod neki, hogy az aktualis konyvtarat listazza my $dir = "." , akkor azt a foldert listazza, ahonnan futtatod. Beteheted a script helyet egy kornyezeti valtozoba esetleg...
2015. okt. 26. 17:12
Hasznos számodra ez a válasz?
 4/10 anonim ***** válasza:
Na, itt ugy tunik, hogy lehet ugy modositani az $0-t, hogy a teljes eleresi utat tartalmazza, ebbol ki tudod szedni a script nevet, es akkor megkapd a konyvtar nevet: [link]
2015. okt. 26. 17:15
Hasznos számodra ez a válasz?
 5/10 A kérdező kommentje:
bocsánat, nem a script helye kell, hanem ahonnan futtatom, ami általában ugyanaz nálam
2015. okt. 26. 22:37
 6/10 anonim ***** válasza:

Arra jo a my $dir = "." (linux/unix/osx alatt biztosan mukodik, windows alatt nem probaltam)


Ha esetleg nem mukodik, akkor probald ezt:

use Cwd;

my $dir = getcwd;


(a Cwd modul benne van a Perl alapertelmezett moduljai kozott, szoval biztosan mukodni fog.)

2015. okt. 27. 11:14
Hasznos számodra ez a válasz?
 7/10 A kérdező kommentje:

valamiért nem működik nekem:


use Cwd;

use strict;

#use warnings;


$current_directory = getcwd;


az alábbi hibaüzenetet adja:

Global symbol "$current_directory" requires explicit package name at script1.pl line 7.

Execution of script1.pl aborted due to compilation errors.


de nincsen hiba, ha kihagyom a use strict;-et, csakhogy arra szükség lenne

2015. dec. 22. 23:37
 8/10 A kérdező kommentje:
lehet hogy a my kell mindenhova, de miért?
2015. dec. 22. 23:41
 9/10 A kérdező kommentje:

ezzel a sorral bajom volt, de végre működik:

next unless (-d "$dir/$file");

szerintem az idézőjel nem kell bele


Viszont van még egy probléma, hogy a . és .. -ot is directorynak veszi, amit én nem szeretnék listáznihogyan lehetne ettől megszabadulni?

2015. dec. 23. 00:26
 10/10 anonim ***** válasza:

"lehet hogy a my kell mindenhova, de miért?"

Ha use strict; pragma alatt programozol, akkor minden változó első használatkor deklarálni kell, hogy globális (our) vagy lokális (my). Ha nem használod a strict-et, akkor a my nélkül létrehozott változók globálisak. Jótanács: perl egysorosakat leszámítva MINDEN programot use strict, és use warnings-al kezdj. Rengeteg szívást spórolhatsz meg.


A . és a .. konvenciók, amivel minden rendszerben találkozni fogsz. Úgy tudsz tőlük megszabadulni, hogy pl:

print "$dir\n" unless $dir eq "." or $dir eq ".."

2015. dec. 23. 01:22
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!