Close
#! /usr/bin/perl -w

sub usage {

    die "-- Version 0.0.1, written by Julien BUTY <julien.buty\@gmail.com>\n";

}

sub do_report {

    my (@args) = @_;

    print ">>> File: `$args[1]'\n";

    print "\t$args[2] line";
    if ($args[2] > 1) { print "s"; }
    print " have been parsed.\n";

    print "\tThe token 'printf' was";
    if ($args[1] == 0) { print " not" }
    print " found";
    if ($args[1] == 1) { print " $args[1] time.\n" }
    elsif ($args[1] > 1) { print " $args[1] times.\n" }
    else { print ".\n" }

    if ($args[1] > 0) {
        print "\tOn the ";
        if ($args[1] == 1) { print "line: " }
        else { print "lines: " }
        $nb_token_const = $args[1];
        while ($args[1] != 0) {
            print "$tab[$nb_token_const+1-$args[1]]";
            if ($args[1] == 1) { print "."; }
            else { print ", " }
            $args[1]--;
        }
        print "\n";
    }
}

    my $nb_token = 0;
    my $line;
    my $nb_line = 0;

    open (SOURCE, $ARGV[1]) or ( print "Impossible to load \"$ARGV[1]\": $!\n" and usage() ) ;
    my $instruction = $ARGV[0];

    for $line (<SOURCE>) {
      
        $nb_line++;

        if ( $line =~ /$instruction[ ]{0,}\([ ]{0,}["']{1}/) {
            $nb_token++;
            $tab[$nb_token] = $nb_line;
        }

    }

    close SOURCE;

    do_report($ARGV[1],$nb_token,$nb_line);