Advertisement
techouse

odjave.pl

Sep 2nd, 2013
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.18 KB | None | 0 0
  1. #!/usr/bin/perl
  2. use warnings;
  3. use strict;
  4. use utf8;
  5. use File::Basename;
  6.  
  7. my $filename = $ARGV[0];
  8. open(my $odjave, '< :encoding(UTF-8)', $filename) or die $!;
  9. local $/ = undef;
  10. my $whole_odjave = <$odjave>;
  11. (my $file, my $dir, my $ext) = fileparse($filename, qr/\.[^.]*/);
  12.  
  13. my @text = split(/Importance*.*/, $whole_odjave); # split into header chunks
  14. my %ODJAVE = ();
  15. foreach (@text) {
  16.     next unless length;
  17.     my $header = $_;
  18.     my $subject;
  19.     my $sender;
  20.     if ($_ =~ m/Subject*.*/) {
  21.         $subject = substr($&, 9);
  22.         $subject =~ s/\+/ /g;
  23.     }
  24.     if ($_ =~ m/SentRepresentingEmailAddress*.*/) {
  25.         $sender = substr($&, 30);
  26.     }
  27.     if ($subject && $sender) {
  28.         if (exists $ODJAVE{$subject}) {
  29.             push($ODJAVE{$subject}, $sender);
  30.         }
  31.         else {
  32.             $ODJAVE{$subject} = [$sender];
  33.         }
  34.     }
  35. }
  36.  
  37. foreach my $key (keys %ODJAVE) {
  38.     my $out_string = '';
  39.     foreach (@{$ODJAVE{$key}}) {
  40.         $out_string .= "'$_',";
  41.     }
  42.     chop($out_string); # remove last comma
  43.     open(my $out, '>', "$file - $key$ext") or die $!;
  44.     print $out $out_string;
  45.     close($out);
  46. }
  47.  
  48.  
  49. close($odjave);
  50. exit();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement