[Pdx-pm] deparse question

Kris Bosland krisb at ring.org
Mon Aug 8 17:31:35 PDT 2005

	Guys, I am trying to make a short, flexible perl find that I can
use in in Win32.

My basic premise:
	1. First argument is user control, rest is dirs
	2. Eval user control and check ref
		2.a. if scalar, make into Regexp
		2.b. if Regexp, make default CODE printing filename if
		2.c. if CODE, use as find sub
		2.d. if other ref, complain
	3. Find on dirs with sub

Anyway, for debugging, I want to deparse the sub I create or get.  Can I
send a CODE to B::Deparse, instead of the whole program?



#!/usr/$work/bin/perl -w
use strict;
use File::Find;

#Collect arguments
die "usage: $0 <pattern or perl code> [directories]"
    if not @ARGV or $ARGV[0] =~ /^-[h?]/i;
my $rawmatch = shift;
my @dirs = @ARGV || ('.');

#Create match sub, or use users match sub
my $out = '$File::Find::name\n';
my $match = eval $rawmatch;
my $sub;

#Turn strings into regexp
$match = qr/$match/ if ref $match eq '';
$match = sub { eval "print $out;" } if ref $match eq 'Regexp';
die qq{Cannot handle type } . ref $match .
    qq{:"$rawmatch", only types ""(scalar), "Regexp", and "CODE"}
    if ref $match ne 'CODE';

#Execute find
find($match, @dirs);

More information about the Pdx-pm-list mailing list