2011-04-05 5 views
0

J'ai besoin d'aide sérieuse, je suis nouveau à Perl et besoin d'aide sur la façon de créer un script Perl qui inciterait le utilisateur pour un répertoire contenant des fichiers perl, analyser chaque fichier dans ce répertoire, puis extraire tous les commentaires de chaque fichier à des fichiers html individuels.Perl - Comment analyser un répertoire, analyser chaque fichier dans le répertoire et extraire tous les commentaires au fichier html

des exemples de code ou des modules existants qui le font déjà serait génial.

Merci!

+0

sont tous les fichiers que vous souhaitez extraire les commentaires de, sont-ils tous le même type? Les personnes qui répondent à cette question ont besoin de savoir car perl, C++ et html ont toutes des séquences de caractères différentes pour indiquer les commentaires. Aussi, voulez-vous une sortie HTML? A quoi voulez-vous ressembler ce html (une table, une liste, organisée par fichier, etc.)? – Paul

Répondre

0

Une simple recherche cpan avec le mot-clé "dir" a fait apparaître un grand nombre de modules utiles. L'un de ceux que j'utilise beaucoup est:

IO::Dir

1

PPI peut être utilisé pour analyser les fichiers de code Perl. Cela devrait vous aider à obtenir des fichiers Perl dans un répertoire (en supposant qu'ils ont des extensions .pl) et en saisissant les commentaires. Je ne suis pas sûr de ce que vous voulez dire au sujet de la pièce HTML:

use warnings; 
use strict; 
use PPI; 

my $dir = shift; 
for my $file (glob "$dir/*.pl") { 
    my $doc = PPI::Document->new($file); 
    for my $com (@{ $doc->find('PPI::Token::Comment') }) { 
     print $com->{content}; 
    } 
} 

Mise à jour: Regardez HTML::Template (mais il peut être exagéré).

+1

Merci, je vais examiner cela. Sur le morceau html, je veux que tous mes commentaires soient écrits dans des fichiers html à des fins de documentation sans utiliser POD. – Steve

+0

Reportez-vous à ma mise à jour. – toolic

+0

Que faire si je veux obtenir les commentaires d'un fichier C au lieu de Perl? – Ehsan

0

Si vous avez le choix, voici un script Ruby

#!/usr/bin/env ruby 
print "Enter directory: " 
directory=File.join(gets.chomp,"*.pl") 
directory="/home/yhlee/test/ruby/*.pl" 
c=0 
Dir[directory].each do |file| 
    c+=1 
    o = File.open("file_#{c}.html","w") 
    File.open(file).each do |line| 
     if line[/#/] 
      o.write (line.scan(/;*\s+(#.*)$/)[0].first + "\n") if line[/;*\s+#/] 
      o.write (line.scan(/^\s+(#.*)$/)[0].first + "\n") if line[/^\s+#/] 
     end 
    end 
    o.close 
end 
+1

Qu'est-ce que cela fait pour une ligne de code Perl comme "while (1) {# a comment"? (Je suppose que c'est la mauvaise chose ...) – tadmc

Questions connexes