Packages / openSUSE Tumbleweed / Unspecified / perl-Carp-Clan
[Source: perl-Carp-Clan]
Package: perl-Carp-Clan (6.80.0-1.6)
[Project overview: perl-carp-clan]
Reportar erros na perspetiva do invocador de um «clã» de módulos
Este módulo baseia-se em "'Carp.pm'" do Perl 5.005_03. Foi modificado para saltar todos os nomes de pacote que coincidem com o padrão dado na instrução "use" dentro do termo "'qw()'" (ou lista de argumentos).
Suponha que tem uma família de módulos ou classes chamados "Pack::A", "Pack::B" e assim por diante, e cada um deles usa "'Carp::Clan qw(^Pack::);'" (ou pelo menos aquele em que o erro ou aviso é gerado).
Assim, quando por exemplo o seu script "tool.pl" chama o módulo "Pack::A", e o módulo "Pack::A" chama o módulo "Pack::B", uma exceção gerada no módulo "Pack::B" parecerá ter-se originado em "tool.pl" onde "Pack::A" foi chamado, e não em "Pack::A" onde "Pack::B" foi chamado, como o "'Carp.pm'" não modificado tentaria fazer-lhe acreditar ':-)'.
Isto funciona de forma semelhante se "Pack::B" chama "Pack::C" onde a exceção é gerada, et cetera.
Por outras palavras, isto culpa todos os erros nos módulos "'Pack::*'" ao utilizador destes módulos, ou seja, a si. ';-)'
Saltar um clã (ou família) de pacotes segundo um padrão que descreve os seus membros é necessário nos casos em que estes módulos não são classes derivadas umas das outras (e assim, ao examinar '@ISA' — como no módulo "'Carp.pm'" original — não ajuda).
O propósito e a vantagem disto é que um «clã» de módulos pode trabalhar em conjunto (e chamar-se mutuamente) e lançar exceções a várias profundidades na hierarquia de chamadas e ainda assim parecer um bloco monolítico (como se fossem um único módulo) na perspetiva do invocador.
Caso queira apenas afastar todas as mensagens de erro do módulo em que faz "'use Carp::Clan'", ou seja, se quiser que todas as mensagens de erro ou avisos pareçam originar-se de onde o seu módulo foi chamado (é para isto que normalmente usava "'use Carp;'" ';-)'), em vez de no próprio módulo (o que pode de qualquer forma fazer com "die" ou "warn"), não precisa de fornecer um padrão; o módulo fornecerá automaticamente o correto para si.
Ou seja, basta "'use Carp::Clan;'" sem argumentos e chamar "carp" ou "croak" conforme apropriado, e eles defenderão automaticamente o seu módulo contra todas as culpas!
Por outras palavras, um padrão só é necessário se quiser fazer vários módulos (mais do que um) trabalharem em conjunto e parecerem como se fossem apenas um.
Other Packages Related to perl-Carp-Clan:
Download perl-Carp-Clan
| Architecture | Package Size | Installed Size | Files |
|---|
| noarch | 28 KiB | 41 KiB | [list of files] |
Caminhos de arquivo do pacote (9)
Paths come from the repository package-file index for the observed builds. They describe archive/package associations, not every file that will exist on a running system after maintainer scripts, alternatives, generated state, diversions, or installation choices.
- /usr/lib/perl5/vendor_perl/5.44.0/Carp
- /usr/lib/perl5/vendor_perl/5.44.0/Carp/Clan.pm
- /usr/share/doc/packages/perl-Carp-Clan
- /usr/share/doc/packages/perl-Carp-Clan/Changes
- /usr/share/doc/packages/perl-Carp-Clan/CONTRIBUTING
- /usr/share/doc/packages/perl-Carp-Clan/README
- /usr/share/licenses/perl-Carp-Clan
- /usr/share/licenses/perl-Carp-Clan/LICENSE
- /usr/share/man/man3/Carp::Clan.3pm.gz
Field source: openSUSE Tumbleweed OSS revision tumbleweed-oss-multiarch:4db10cdde3ad82c7e22be35753c9e164b4bdd30f92db4aee17a0d4c94c5f902f