Packages / openSUSE Tumbleweed / Unspecified / perl-IO-Interactive
[Source: perl-IO-Interactive]
Package: perl-IO-Interactive (1.27.0-1.5)
[Project overview: libio-interactive-perl]
Utilitários para E/S interativa
Este módulo fornece três sub-rotinas utilitárias que facilitam o desenvolvimento de aplicações interativas.
O filehandle 'ARGV', aquele que '<>' ou um 'readline()' vazio usa, tem várias magias associadas. Na verdade, só é aberto quando se tenta ler dele. Verificar '-t ARGV' antes de ter tentado ler dele pode dar a resposta errada. Além disso, pode não se ler de 'ARGV'. Se o valor em '@ARGV' for o nome de ficheiro mágico '-' (uma convenção para significar o filehandle padrão de entrada ou saída), 'ARGV' pode na verdade ser 'STDIN'. Não se quer pensar em tudo isto. Este módulo é discutido em _Perl Best Practices_ na página 218. Ver também a entrada 'ARGV' em perlvar e a entrada 'readline' em perlfunc.
* 'is_interactive()'
Esta sub-rotina devolve verdadeiro se '*ARGV' e o filehandle atualmente selecionado (normalmente '*STDOUT') estiverem ligados ao terminal. O teste é consideravelmente mais sofisticado do que:
-t *ARGV && -t *STDOUT
pois tem em conta o comportamento mágico de '*ARGV'.
Também se pode passar a 'is_interactive' um filehandle gravável, caso em que exige que esse filehandle esteja ligado a um terminal (em vez do atualmente selecionado). O suspeito habitual aqui é '*STDERR':
if ( is_interactive(*STDERR) ) {
carp $warning;
}
Note que 'is_interactive' pode devolver verdadeiro numa Windows Scheduled Task. Ver Github #6 (https://github.com/briandfoy/io-interactive/issues/6).
* 'interactive()'
Esta sub-rotina devolve '*STDOUT' se 'is_interactive' for verdadeiro. Se 'is_interactive()' for falso, 'interactive' devolve um filehandle que não imprime.
Isto facilita criar aplicações que só imprimem quando a aplicação é interativa:
print {interactive} "Please enter a value: ";
my $value = <>;
Também se pode passar a 'interactive' um filehandle gravável, caso em que escreve nesse filehandle se estiver ligado a um terminal (em vez de escrever em '*STDOUT'). Mais uma vez, o suspeito habitual é '*STDERR':
print {interactive(*STDERR)} $warning;
* 'busy {...}'
Esta sub-rotina recebe um bloco como único argumento e executa esse bloco. Enquanto o bloco é executado, '*ARGV' é temporariamente substituído por um filehandle fechado. Ou seja, nenhuma entrada de '*ARGV' é possível num bloco 'busy'. Além disso, quaisquer tentativas de enviar entrada para o bloco 'busy' através de '*ARGV' são interceptadas e uma mensagem de aviso é impressa em '*STDERR'. A chamada a 'busy' devolve um filehandle que contém a entrada interceptada.
Um bloco 'busy' é portanto útil para impedir tentativas de entrada quando o programa está ocupado com alguma tarefa não interativa.
Other Packages Related to perl-IO-Interactive:
Download perl-IO-Interactive
| Architecture | Package Size | Installed Size | Files |
|---|
| noarch | 24 KiB | 25 KiB | [list of files] |
Caminhos de arquivo do pacote (11)
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/IO
- /usr/lib/perl5/vendor_perl/5.44.0/IO/Interactive.pm
- /usr/share/doc/packages/perl-IO-Interactive
- /usr/share/doc/packages/perl-IO-Interactive/Changes
- /usr/share/doc/packages/perl-IO-Interactive/examples
- /usr/share/doc/packages/perl-IO-Interactive/examples/interactive.pl
- /usr/share/doc/packages/perl-IO-Interactive/examples/memory_test.pl
- /usr/share/doc/packages/perl-IO-Interactive/SECURITY.md
- /usr/share/licenses/perl-IO-Interactive
- /usr/share/licenses/perl-IO-Interactive/LICENSE
- /usr/share/man/man3/IO::Interactive.3pm.gz
Field source: openSUSE Tumbleweed OSS revision tumbleweed-oss-multiarch:4db10cdde3ad82c7e22be35753c9e164b4bdd30f92db4aee17a0d4c94c5f902f