Papapep wrote: > I've made a small program that tries to get all the files from a > directory that's full of files that they have the name format : > pepe-1_DDMMYYYY.txt or pepe-2_DDMMYYYY.txt. > First, I am just trying to get them and print the array created. > Afterwards, when this works I'll do more things with the data in them > included, but for now I can't get though with the first objective :-/ > When I execute the program it makes NOTHING!!! At least, that's what > it seems... > I know its not a very good code, but it's my first one! :-D
We've all written naff code. Sometimes quite often! Welcome to Perl. > Can anybody give some advice about where's the bug? > Thanks in advance. > > > #!perl > > use strict; > > use warnings; > > my $program; > > my @filenames; > > opendir (FITXER,"c:/documents and > > settings/administrador/escritorio/pepes") or > > die "no es pot llegir el directori: $!\n"; Leave Perl to put its own \n on the end of the die string. Then it will also add the source line number being executed when it dies. > > @noms = readdir (FITXER) or die "no es poden agafar els noms dels fitxers \n"; > > foreach $program (@noms) You haven't declared @noms. This will fail in compilation with 'use strict' in effect. > > { > > if ($program =~ m/^pepe-1_(\d[8])\.txt$/) You need braces around the '8', not square brackets. Also you can search for both the pepe-1 and pep-2 files with if ($program =~ m/^pepe-[12]_(\d{8})\.txt$/) > > { > > ### do stuff, given a filename > > print "$program \n"; This will work, rpviding you have fixed the other errors. > > } > > elsif( $program =~ m/^pepe-2_(\d[8])\.txt$/) braces again! > > { > > ### do stuff, given a filename > > print $program <stdout>; This will try to read from the <stdout> filehandle and try to print each line to the filehandle specified by $program. Note that <stdout> is case=sensitive, and isn't the same as <STDOUT>, but either way it's not open for input and the read will fail. What you probably mean is print STDOUT $program; but STDOUT is selected by default anyway, so you may as well just use print "$program\n"; as you did before. I hope this helps. Come back if you need anything more. Rob -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]