in reply to Re: trouble with glob
in thread trouble with glob

But whenever I get my results returned by glob like this, they are broken up into different array elements by the spaces in the directories. So for instance:

@SEARCH_FOR_TIFS = glob("$FOLDERNAME*.tif"); print $SEARCH_FOR_TIFS[0];
Return
Element 0: /local/Macintosh/COVERS Element 1: archive/A-E/Eye Element 2: of Element 3: Element 4:

And part of the data disappears (element 3 and 4 should not be empty if it was splitting on the white space).

What am I doing wrong here? I looked through File::Glob but don't see how to change globs behavior. I see the arguments to glob will be interpreted as different search queries if separated by white space but that is not applicable here. This wasn't a problem when I was store the glob results in scalar, but that obviously wasn't the right strategy either since I was only getting one of the results.

Replies are listed 'Best First'.
Re^3: trouble with glob
by Gulliver (Monk) on Dec 03, 2010 at 22:02 UTC
    I tried a simplified version of what you had before and it works every time on my XP laptop. Found in Programming Perl that it is supposed to return false (only once) when it gets to the end of the matching files and then start over. At least you now have an array of what the glob is doing. I couldn't get the glob to work with $FOLDERNAME in the glob but with the path spelled out it worked fine. The book mentioned something about only one level of interpreting variable but I didn't quite get it.

      Thanks for your help. I could never get it to work quite right and ended up using opendir/readdir to iterate through the files in the directory and look for the ones I was after. I know there is probably a more efficient way of doing this, but it worked for me for now. Perhaps if I looked at glob() with fresh eyes I would understand what I was going wrong. Encouraging that it worked for you, but perhaps Windows is more lenient with spaces in the path names then LINUX is (well we KNOW that is true, but not sure about how perl sees the matter).

      opendir(DIR,"$FOLDERNAME") or die $!; #Look through the tiffs for one we care about while ( $FILE = readdir(DIR)) { #check for tif's in folder starting with at least 3 nu +mbers since they have the ISBN in it if ( $FILE =~ /^[0-9][0-9][0-9].*\.tif/ ) { $FILE =~ s/([0-9]*).*/$1/; print $BOOKNAME."'s ISBN is: ".$FILE."\n"; }