Net::FTP=GLOB(0x919f390)<<< 150 Opening ASCII mode data connection for file list Net::FTP=GLOB(0x919f390)<<< 226 Transfer complete to_kill is /images/brick5/jm2.jpg Net::FTP=GLOB(0x919f390)>>> DELE /images/brick5/jm2.jpg Net::FTP=GLOB(0x919f390)<<< 250 DELE command successful to_kill is /images/brick5/photo 1.JPG Net::FTP=GLOB(0x919f390)>>> DELE /images/brick5/photo 1.JPG Net::FTP=GLOB(0x919f390)<<< 250 DELE command successful to_kill is /images/brick5/photo 2.JPG Net::FTP=GLOB(0x919f390)>>> DELE /images/brick5/photo 2.JPG Net::FTP=GLOB(0x919f390)<<< 250 DELE command successful to_kill is /images/brick5/s.jpg Net::FTP=GLOB(0x919f390)>>> DELE /images/brick5/s.jpg Net::FTP=GLOB(0x919f390)<<< 250 DELE command successful Net::FTP=GLOB(0x919f390)>>> RMD /images/brick5 Net::FTP=GLOB(0x919f390)<<< 250 RMD command successful string is /css/brick1.css Net::FTP=GLOB(0x919f390)>>> DELE /css/brick1.css Net::FTP=GLOB(0x919f390)<<< 250 DELE command successful killed were brick1.html brick2.html brick3.html brick4.html brick5.html /images/brick1/jm2.jpg /images/brick1/photo 1.JPG /images/brick1/photo 2.JPG /images/brick1/s.jpg brick1 /images/brick2/jm2.jpg /images/brick2/photo 1.JPG /images/brick2/photo 2.JPG /images/brick2/s.jpg brick2 /images/brick3/jm2.jpg /images/brick3/photo 1.JPG /images/brick3/photo 2.JPG /images/brick3/s.jpg brick3 /images/brick4/jm2.jpg /images/brick4/photo 1.JPG /images/brick4/photo 2.JPG /images/brick4/s.jpg brick4 /images/brick5/jm2.jpg /images/brick5/photo 1.JPG /images/brick5/photo 2.JPG /images/brick5/s.jpg brick5 /css/brick1.css $ #### #!/usr/bin/perl -w use strict; use 5.010; use lib "template_stuff"; use html2; say "What keyword would you like to delete?"; my $word = <>; chomp $word; say "Delete everything associated with $word? (Y for yes)"; my $answer = <>; chomp $answer; die unless ( $answer eq 'Y' or $answer eq 'y' ); # main data structure my %vars = ( word => $word, page => 'pages', image => 'images', css => 'css', ); my $rvars = \%vars; my $rftp = get_ftp_object(); my $rfiles = get_html_filenames( $rftp, $rvars ); my $rptr = kill_files( $rftp, $rvars, $rfiles ); my @killed = @$rptr; say "killed were @killed "; __END__ #### sub kill_files { use Net::FTP; use 5.010; use Path::Class; my ( $ftp, $rvars, $rfiles ) = @_; my %vars = %$rvars; my @files = @$rfiles; my @killed_files; # kill html files for my $html (@files) { my $obj = file( '', $vars{page}, $html ); my $string = $obj->stringify; say "string is $string"; my $return = $ftp->delete($string); if ($return) { push( @killed_files, $html ); } } # chop off ending foreach (@files) { $_ =~ s/\.html//; } say "now files are @files"; # kill image files and directories for my $dir (@files) { my $obj = dir( '', $vars{image}, $dir ); my $path = $obj->stringify; say "path is $path"; $ftp->cwd($path) or warn "Cannot change working directory ", $ftp->message; my @remote_files = $ftp->ls(); for my $file (@remote_files) { next if $file eq '.' or $file eq '..'; my $to_kill = file( $path, $file ); say "to_kill is $to_kill"; my $return = $ftp->delete($to_kill); if ($return) { push( @killed_files, $to_kill ); } } my $return = $ftp->rmdir($path); if ($return) { push( @killed_files, $dir ); } } # kill css file my $css_obj = file( '', $vars{css}, $vars{word} . '1.css' ); my $string = $css_obj->stringify; say "string is $string"; my $return = $ftp->delete($string); if ($return) { push( @killed_files, $string ); } return \@killed_files; }