Ga naar inhoud

[Perl] dir lezen


anoniem

Aanbevolen berichten

Beste mensen, Ik zit nu een beetje vast met Perl. Ik moet met een programma een map lezen en alle bestanden in een scalar gooien. Maar hoe doe ik dit. Ik heb op www.perldoc.com lopen zoeken en ik heb een vermmoeden dat het iets met readdir() is, alleen ik heb hier nog nooit mee gewerkt. Zo moet je dan samen met opendir() werken, alleen dan moet je een map opgeven. Maar hoe doe je dat dan met een map waar je al inzit, bijv: Ik zit nu in /home/wwizzkidd en ik heb het programma in die map zitten. Dus ik wil dan alles in /home/wwizzkidd lezen. Maar ik kan dus dit niet opgeven: opendir(DIR,"/home/wwizzkidd"); want dit is niet overal hetzelfde :). Hoe los ik zoiets op? grtz, wwizzkidd
Link naar reactie
  • 2 weken later...
Ach, er is voor alle mogelijkheden iets te zeggen. Print join werkt goed, maar neemt onnodig geheugenruimte in beslag. En printen vanaf de command line is leuk, maar niet echt praktisch in een script. Of je moet system calls gaan doen, en of dat nou de weg is. Maar deze thread verandert ondertussen in een wedstrijdje ver pissen, en als jij die graag wilt winnen, dan gun ik je die eer van harte.
Link naar reactie
[quote:d85cda08f8="gerben"]Ach, er is voor alle mogelijkheden iets te zeggen. Print join werkt goed, maar neemt onnodig geheugenruimte in beslag.[/quote:d85cda08f8] Alhoewel dat technisch natuurlijk volkomen waar is, is de opmerking wat vreemd aangezien je niet met de volgende lus kwam: [code:1:d85cda08f8]while (readdir(DIR)) { print "$_\n"; }[/code:1:d85cda08f8] De bestandsnamen in een array stoppen alleen om ze vervolgens een voor een er weer uit te gooien is nou niet echt in lijn met je bezorgdheid om een paar bytes geheugen. Die join was bedoeld als uitleg aan iemand die niet veel van Perl weet (als wwizzkidd dat wel wist zou hij geen probleem hebben gehad). Het printen van een array zonder lus, join of het (tijdelijk) veranderen van $, zet zo iemand weer voor een vraag: "waarom staan alle bestandsnamen aan elkaar vast?" Het kromme van die shift is dat je op die manier maar 1 keer over de bestanden kunt loopen (en waarom zou je ze dan nog in een array stoppen?). Ook nogal verwarrend voor iemand zonder veel ervaring met Perl. [quote:d85cda08f8]En printen vanaf de command line is leuk, maar niet echt praktisch in een script. Of je moet system calls gaan doen, en of dat nou de weg is.[/quote:d85cda08f8] Wat hebben system-calls hiermee te maken? Maar goed, voor jou dan compleet uitgekauwd: [code:1:d85cda08f8]#!/usr/bin/perl -w print "Files in current directory:\n"; print "$_\n" for <*>;[/code:1:d85cda08f8] Het gaat trouwens niet om "winnen", het ging erom dat die shift brak is en een beginner alleen van de wal in de sloot helpt.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...