Advertisement
deepaktivari

Untitled

May 9th, 2013
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.47 KB | None | 0 0
  1. #!/usr/bin/perl -w
  2.  
  3. use strict;
  4. use warnings;
  5. use Cwd;
  6.  
  7.  
  8. sub get_path {
  9.     my $path;
  10.    
  11.     if (!(@ARGV)){
  12.         $path = cwd();
  13.     }
  14.     else {
  15.         foreach my $e(@ARGV){
  16.             if($e =~ m/(\-d(\w+))/gi){
  17.                 $path = $2;
  18.             }
  19.             else {
  20.                 $path = cwd();
  21.             }
  22.         }
  23.     }
  24.    
  25. return $path;
  26.  
  27. }
  28.  
  29. sub get_files {
  30.     my $path = shift @_;
  31.    
  32.     my @directory;
  33.    
  34.     opendir(my $dh, $path) or die $!;
  35.     while(defined(my $e = readdir $dh)){
  36.         next if ($e =~ /^\.\.?$/);
  37.         if (-d "$path/$e"){
  38.             # print "$path/$e\n";
  39.             push (@directory,"$path/$e");  
  40.         }  
  41.     }
  42.     close $dh;
  43.  
  44.     get_files($_) for @directory;
  45.        
  46.     open_directory(@directory);
  47. }
  48.  
  49. sub open_directory {
  50.    
  51.     my @files;
  52.    
  53.     foreach my $d(@_){
  54.            
  55.         opendir (my $dh, $d)or die " '$d' $!";
  56.         while(my $e = readdir $dh){
  57.             if ($e =~ /\.htm/gi){
  58.                 push(@files,"$d/$e");
  59.             }
  60.         }closedir $dh;
  61.     }
  62.    
  63.     open_files(@files);
  64.    
  65. }
  66.  
  67. sub open_files {
  68.  
  69.     my @files = @_;
  70.     my @lines;
  71.     foreach (@files){
  72.         print "$_\[1\]\n";
  73.     }
  74.    
  75.     foreach my $f (@files){
  76.         print "$f\[2\]\n";
  77.         open(my $fh,'<',$f) or die " '$f' $!";
  78.             print "$fh\[3\]\n";
  79.         push(@lines,<$fh>);
  80.         close($fh);
  81.     }
  82.    
  83.     extract_data(@lines);
  84. }
  85.  
  86. sub extract_data {
  87.    
  88.     my @lines = @_;
  89.     my @emails;
  90.    
  91.     foreach my $line(@lines){
  92.             while($line =~ /(\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b)/gi){
  93.                     push(@emails,$1);
  94.             }
  95.     }
  96.     return @emails;
  97. }
  98.  
  99.  
  100. my $path = get_path();
  101. my @emailsa = get_files($path);
  102.  
  103. foreach my $n(@emailsa){
  104.         print "$n\n";
  105.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement