#perl
#perl
Вопрос:
Мне нужна серьезная помощь, я новичок в perl, и мне нужна помощь в том, как создать perl-скрипт, который запрашивал бы у пользователя каталог, содержащий файлы perl, анализировал каждый файл в этом каталоге, а затем извлекал все комментарии из каждого файла в отдельные html-файлы.
примеры кода или существующие модули, которые уже делают это, были бы великолепны.
Спасибо!
Комментарии:
1. Все ли файлы, из которых вы хотите извлечь комментарии, одного типа? Люди, отвечающие на этот вопрос, должны знать, потому что perl, C и html имеют разные последовательности символов для обозначения комментариев. Кроме того, вам нужен вывод HTML? Как вы хотите, чтобы этот html выглядел (таблица, список, упорядоченный по файлам и т.д.)?
Ответ №1:
PPI можно использовать для анализа файлов кода Perl. Это должно помочь вам начать с получения файлов Perl в каталоге (при условии, что у них есть .pl
расширения) и получения комментариев. Я не уверен, что вы имеете в виду, говоря о фрагменте 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};
}
}
Обновление: Посмотрите на HTML::Template (но это может быть излишним).
Комментарии:
1. Спасибо, я изучу это. Что касается фрагмента html, я хочу, чтобы все мои комментарии были записаны в html-файлы для целей документации без использования POD.
Ответ №2:
Простой поиск cpan по ключевому слову «dir» выдал целую кучу полезных модулей. Один из тех, которые я часто использую, это:
Ответ №3:
Если у вас есть выбор, вот скрипт 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. Что это делает для строки кода Perl типа «while (1) { # комментарий»? (я предполагаю, что это делает неправильную вещь …)