Я лично использую комбинацию --stat и --oneline с командой show:
git show --stat --oneline HEAD
git show --stat --oneline b24f5fb
git show --stat --oneline HEAD^^..HEAD
Если вам не нравится / требуется статистика добавления / удаления, вы можете заменить --stat с --name-only
git show --name-only --oneline HEAD
git show --name-only --oneline b24f5fb
git show --name-only --oneline HEAD^^..HEAD
Класс:
# lib/Class.pm
package Class;
use Moose;
# define the class
1;
модуль А, который экспортирует функции:
# lib/A/Module.pm
package A::Module;
use strict;
use warnings;
use Sub::Exporter -setup => {
exports => [ qw/foo bar/ ],
};
sub foo { ... }
sub bar { ... }
1;
сценарий А, который использует их:
# bin/script.pl
#!/usr/bin/env perl
use strict;
use warnings;
use FindBin qw($Bin);
use lib "$Bin/../lib";
use Class;
use A::Module qw(foo bar);
print Class->new;
print foo(), bar();
В основном Вы создаете файл, названный Yourmodulename.pm
, чье содержание:
package Yourmodulename;
# Here are your definitions
1; # Important, every module should return a true value
Затем программа, которая использует модуль, будет похожа:
#!/usr/bin/perl
use strict; # These are good pragmas
use warnings;
# Used modules
use Carp; # A module that you'll probably find useful
use Yourmodulename; # Your module
можно хотеть организовать модули в иерархическом (и надо надеяться логичный) путь. Чтобы сделать так, Вы создаете дерево каталогов как:
Your/Module.pm
Your/Other/Module.pm
И затем в Вашей программе:
use Your::Module;
use Your::Other::Module;
существует больше средств для экспорта функций и переменных от модуля, можно смотреть на Henning Koch "Пишущий серьезный Perl: абсолютный минимум необходимо знать" .
"Точный" эквивалент Вашего примера Python в Perl был бы похож на это:
# MyModule.pm
package MyModule;
sub helloworld {
my ( $name ) = @_;
print "Hello, $name\n";
}
1;
# main.pl
use MyModule;
MyModule::helloworld( 'Jim' );
Для больше, см. запись для package
в документации perlfunc . Для намного больше, посмотрите документация perlmod .
Последняя треть из Промежуточный Perl посвящена созданию модуля.
Каждый раз, когда Вы хотите знать, как сделать что-то в Perl, проверьте perltoc, оглавление для документации Perl:
% perldoc perltoc
Несколько частей базовой документации Perl могут помочь Вам:
Удача,
Одна незначительная деталь, которую до сих пор не упомянули ответы, - то, что, если Вы имеете (предпочтительно маленький) модуль, который является достаточно определенным для цели, что он никогда не будет снова использоваться, можно поместить его в тот же файл как основная программа или другой пакет:
# main.pl
# Since this is a beginner question, I'll also point out that you should
# *always* use strict and warnings. It will save you many headaches.
use strict;
use warnings;
MyModule::helloworld('Jim');
AnotherModule::helloworld('Jim');
package MyModule; # Still in main.pl!
sub helloworld {
my ( $name ) = @_;
print "Hello, $name\n";
}
package AnotherModule; # Yep, still main.pl
sub helloworld {
my $name = shift;
print "Another hello to $name\n";
}
Это часто не используется, потому что это дает Вам пакет, это определяется в файле, имя которого не является тем же как пакетом, который может стать сбивающим с толку, потому что Вы имеете к use
/ require
имя файла, но ссылаетесь на него в коде именем пакета.
Также примечание, которое эти 1;
только необходимо как заключительная строка каждого файла, который включен через use
/ require
. В этом случае мне не был нужен он, потому что это находится в main.pl
. При помещении нескольких пакетов в тот же файл Вам только нужно 1;
в конце файла, не после каждого пакета.
Самый традиционный способ настроить модуль следующие:
package Foo::Bar;
our @ISA = qw(Exporter); # Tells perl what to do with...
our @EXPORT = qw(sub1 sub2 sub3); # automatically exported subs
our @EXPORT_OK = qw(sub4 sub5); # exported only when demanded
# code for subs, constants, package variables here
1; # Doesn't actually have to be 1, just a 'true' value.
и поскольку другие сказали, можно использовать его как так:
use Foo::Bar;