Joe Stuart wrote:
I have a script that recursively goes through the filesystem and changes
links in html documents The problem I'm having is that it chokes on
directories with spaces in there names. Does anyone have any
suggestions on how to deal with this? I've tried using both glob and
readdir to go through the directory. Glob doesnt error out, but it
doesnt change the links in the documents and when using readdir I get
this error message. Bad symbol for filehandle at ./recurse.pl line 15.

Here is some code I've posted before. I think it works with spaces.

#!/usr/bin/perl

use strict;
use warnings;

use File::Spec;


scan_dir('.');


my @dirstack;

sub scan_dir {
  my $dir = shift;
  return unless -d $dir;

  my @subdirs;

  opendir DIR, $dir or die "Can't open directory ($dir): $!\n";
  while (my $file = readdir DIR) {
    next if $file eq File::Spec->curdir()
      or $file eq File::Spec->updir();

    my $path = File::Spec->catfile($dir, $file);
    if (-d $path) {
      push @subdirs, $file;
      next;
    } else {
      # => do something here <= #
      print "$path\n";
    }
  }
  closedir DIR;

  foreach my $subdir (@subdirs) {
    push @dirstack, $subdir;
    scan_dir(File::Spec->catdir($dir, $subdir));
    pop  @dirstack;
  }
}

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>




Reply via email to