rules-stats-generate.pl 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #!/usr/bin/perl
  2. ##
  3. ## Author......: Jens Steube <jens.steube@gmail.com>
  4. ## License.....: MIT
  5. ##
  6. use strict;
  7. use warnings;
  8. my $cmd_rules_debug = "./rules-debug.bin";
  9. if (scalar @ARGV != 3)
  10. {
  11. printf STDERR "usage: %s rules_file word_file out_file\n", $0;
  12. exit (-1);
  13. }
  14. my $rules_file = shift @ARGV;
  15. my $word_file = shift @ARGV;
  16. my $out_file = shift @ARGV;
  17. my $rules;
  18. open (RULES_FILE, "<", $rules_file) or die ("$rules_file: $!\n");
  19. while (my $line = <RULES_FILE>)
  20. {
  21. chomp ($line);
  22. next unless length $line;
  23. push (@{$rules}, $line);
  24. }
  25. close (RULES_FILE);
  26. my $found;
  27. open (OUT_FILE, "<", $out_file) or die ("$out_file: $!\n");
  28. while (my $line = <OUT_FILE>)
  29. {
  30. chomp ($line);
  31. next unless length $line;
  32. my $word = substr ($line, index ($line, ":") + 1);
  33. $found->{$word} = undef;
  34. }
  35. close (OUT_FILE);
  36. for my $rule (@{$rules})
  37. {
  38. my $tmp_rule = "rules-debug.rule";
  39. my $tmp_result = "rules-debug.result";
  40. open (RULE, ">", $tmp_rule) or die ("$tmp_rule: $!\n");
  41. print RULE $rule, "\n";
  42. close (RULE);
  43. system ("$cmd_rules_debug $tmp_rule < $word_file > $tmp_result");
  44. open (RESULT, "<", $tmp_result) or die ("$tmp_result: $!\n");
  45. while (my $line = <RESULT>)
  46. {
  47. chomp ($line);
  48. next unless length $line;
  49. next unless exists $found->{$line};
  50. print $rule, "\n";
  51. }
  52. close (RESULT);
  53. }