> I have the following find/grep line running just fine from a 
> telnet prompt on the server. I'm trying to include this line 
> into a web app using CFEXECUTE (ColdFusion) but can't get it 
> to work. I know that a compiled perl script would work since 
> I'm already using some previously written ones.
>  
> How could I do the following in Perl? I'm searing the 
> directory d:\mywork and all sub-directories within for all 
> the files with a .txt file extension and within those files 
> for the match of "000;"
>  
> find D:\mywork -name '*.txt' -exec grep '000;' '{}' \; -print"

You can use find2perl (installed with perl) to change your find command to
perl's equivalent.

The following returns me the perl code. 

$-> find2perl work -name '*.txt' -exec grep '000;' '{}' \; -print

#! /depot/perl-5.6.0/bin/perl -w
    eval 'exec /depot/perl-5.6.0/bin/perl -S $0 ${1+"$@"}'
        if 0; #$running_under_some_shell

use strict;
use File::Find ();

# Set the variable $File::Find::dont_use_nlink if you're using AFS,
# since AFS cheats.

# for the convenience of &wanted calls, including -eval statements:
use vars qw/*name *dir *prune/;
*name   = *File::Find::name;
*dir    = *File::Find::dir;
*prune  = *File::Find::prune;


# Traverse desired filesystems
File::Find::find({wanted => \&wanted}, 'work');
exit;


sub wanted {
    /^.*\.txt\z/s &&
    &doexec(0, 'grep','000;','{}') &&
    print("$name\n");
}


BEGIN {
    require Cwd;
    my $cwd = Cwd::cwd();
}

sub doexec {
    my $ok = shift;
    for my $word (@_)
        { $word =~ s#{}#$name#g }
    if ($ok) {
        my $old = select(STDOUT);
        $| = 1;
        print "@_";
        select($old);
        return 0 unless <STDIN> =~ /^y/;
    }
    chdir $cwd; #sigh
    system @_;
    chdir $File::Find::dir;
    return !$?;
}

--Ankur 

If the automobile had followed the same development cycle as the computer, a
Rolls-Royce would today cost $100, get a million miles per gallon, and
explode once a year, killing everyone inside. - Robert X. Cringely



-- 
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