#!/usr/bin/perl ##################################################################### # # # Check system dependences between php-pear modules # # # # Paweł Gołaszewski # # Michał Moskal # # ------------------------------------------------------------------# # TODO: # # - extension_loaded - dependencies. # # - some clean-up... # ##################################################################### die "You have to specify input files" if (@ARGV < 1); @files = (); %req = (); while (@ARGV > 0) { $f = shift; push @files, $f; # skip non-php files next unless ($f =~ /\.php$/); open(F, "< $f") or die; while () { # skip comments next if (/^\s*(#|\/\/|\*|\/\*)/); while (/(\W|^)(require|include)(_once)? \s* \(? \s* ("([^"]*)"|'([^']*)') \s* \)? \s* ;/xg) { if ($5 ne "") { $x = $5; } elsif ($6 ne "") { $x = $6; } else { next; } next if ($x =~ m|^\./| or $x =~ /\$/); $req{$x} = 1; } } } f: for $f (keys %req) { for $g (@files) { next f if ($g =~ /\Q$f\E$/); } print "pear($f)\n"; }