Packages / openSUSE Leap 16.0 / Unspecified / perl-IO-Interactive
[Source: perl-IO-Interactive]
Package: perl-IO-Interactive (1.025-bp160.1.11)
[Project overview: libio-interactive-perl]
Hilfsfunktionen für interaktive Ein-/Ausgabe
Dieses Modul stellt drei Hilfs-Subroutinen bereit, die die Entwicklung interaktiver Anwendungen erleichtern.
Das Dateihandle 'ARGV', dasjenige, das '<>' oder ein leeres 'readline()' verwendet, hat verschiedene magische Eigenschaften. Es wird erst geöffnet, wenn Sie versuchen, daraus zu lesen. Die Prüfung von '-t ARGV', bevor Sie daraus gelesen haben, könnte eine falsche Antwort liefern. Außerdem lesen Sie möglicherweise gar nicht von 'ARGV'. Wenn der Wert in '@ARGV' der magische Dateiname '-' ist (eine Konvention für das Standard-Dateihandle für Eingabe oder Ausgabe), könnte 'ARGV' tatsächlich 'STDIN' sein. Sie wollen sich nicht mit all dem beschäftigen. Dieses Modul wird in _Perl Best Practices_ auf Seite 218 besprochen. Siehe auch den Eintrag 'ARGV' in perlvar und den Eintrag 'readline' in perlfunc.
* 'is_interactive()'
Diese Subroutine gibt wahr zurück, wenn '*ARGV' und das aktuell ausgewählte Dateihandle (gewöhnlich '*STDOUT') mit dem Terminal verbunden sind. Der Test ist erheblich ausgefeilter als:
-t *ARGV && -t *STDOUT
da er das magische Verhalten von '*ARGV' berücksichtigt.
Sie können 'is_interactive' auch ein beschreibbares Dateihandle übergeben; in diesem Fall verlangt es, dass dieses Dateihandle mit einem Terminal verbunden ist (statt des aktuell ausgewählten). Der übliche Kandidat hier ist '*STDERR':
if ( is_interactive(*STDERR) ) {
carp $warning;
}
Beachten Sie, dass 'is_interactive' in einer Windows Scheduled Task wahr zurückgeben kann. Siehe Github #6 (https://github.com/briandfoy/io-interactive/issues/6).
* 'interactive()'
Diese Subroutine gibt '*STDOUT' zurück, wenn 'is_interactive' wahr ist. Wenn 'is_interactive()' falsch ist, gibt 'interactive' ein Dateihandle zurück, das nicht ausgibt.
So lassen sich leicht Anwendungen erstellen, die nur ausgeben, wenn die Anwendung interaktiv ist:
print {interactive} "Please enter a value: ";
my $value = <>;
Sie können 'interactive' auch ein beschreibbares Dateihandle übergeben; in diesem Fall schreibt es in dieses Dateihandle, wenn es mit einem Terminal verbunden ist (statt in '*STDOUT' zu schreiben). Wiederum ist der übliche Kandidat '*STDERR':
print {interactive(*STDERR)} $warning;
* 'busy {...}'
Diese Subroutine nimmt einen Block als einziges Argument und führt diesen Block aus. Während der Block ausgeführt wird, wird '*ARGV' vorübergehend durch ein geschlossenes Dateihandle ersetzt. Das heißt, in einem 'busy'-Block ist keine Eingabe von '*ARGV' möglich. Darüber hinaus werden Versuche, Eingabe über '*ARGV' in den 'busy'-Block zu senden, abgefangen und eine Warnmeldung an '*STDERR' ausgegeben. Der Aufruf von 'busy' gibt ein Dateihandle zurück, das die abgefangene Eingabe enthält.
Ein 'busy'-Block ist daher nützlich, um Eingabeversuche zu verhindern, wenn das Programm mit einer nicht interaktiven Aufgabe beschäftigt ist.
Other Packages Related to perl-IO-Interactive:
Download perl-IO-Interactive
| Architecture | Package Size | Installed Size | Files |
|---|
| noarch | 23 KiB | 23 KiB | [list of files] |
Paketdateipfade (10)
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.42.0/IO
- /usr/lib/perl5/vendor_perl/5.42.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/licenses/perl-IO-Interactive
- /usr/share/licenses/perl-IO-Interactive/LICENSE
- /usr/share/man/man3/IO::Interactive.3pm.gz
Field source: openSUSE Leap 16.0 OSS revision leap-16-0-oss-multiarch:271b36d440253edf9871ac0c100319fc7443d8f2d54b6b449a72e9414c51577c