NAME
Quiq::ExampleCode - Führe Beispielcode aus
BASE CLASS
SYNOPSIS
(1) Code $code ausführen und den Code selbst und sein Resultat nach STDOUT schreiben. Das Resultat (Skalar- oder List-Kontext) wird direkt zurückgeliefert.
my $exa = Quiq::ExampleCode->new;
$res|@res = $exa->execute($code,-variables=>\@keyval);
...
(2) Code $code ausführen und den Code selbst und sein Resultat in Form eines Objektes zurückliefern. Die Ausgabe auf STDOUT unterbleibt.
my $exa = Quiq::ExampleCode->new(
-objectReturn => 1,
-verbose => 0,
);
Ausführung im Skalar-Kontext:
$obj = $exa->execute($code,-variables=>\@keyval);
my $code = $obj->code;
my $res = $obj->result;
...
Im List-Kontext:
$obj = $exa->execute($code,-variables=>\@keyval,-listContext=>1);
my $code = $obj->code;
my $resA = $obj->result;
...
DESCRIPTION
Die Klasse dient zum Ausführen von Beispielcode in Perl. Beispielcode ist dadurch gekennzeichnet, dass der Code und sein Resultat gegenüber gestellt werden.
EXAMPLES
Setzen von Variablen
Variable vorab setzen:
$exa->setVariable(
ffm => $ffm,
);
my $cmd = $exa->execute(q|
$ffm->videoToImages('video.mp4','img',
-aspectRatio => '4:3',
-framestep => 6,
-start => 3,
-stop => 10,
);
|);
Variable per Option -variables bei Aufruf setzen:
my $cmd = $exa->execute(q|
$ffm->videoToImages('video.mp4','img',
-aspectRatio => '4:3',
-framestep => 6,
-start => 3,
-stop => 10,
);|,
-variables => [
ffm => $ffm,
],
);
oder (in anderer Reihenfolge):
my $cmd = $exa->execute(
-variables => [
ffm => $ffm,
],q|
$ffm->videoToImages('video.mp4','img',
-aspectRatio => '4:3',
-framestep => 6,
-start => 3,
-stop => 10,
);
|,
);
METHODS
Konstruktor
new() - Erzeuge Instanz
Synopsis
$exa = $class->new(@opt);
Options
- -fileHandle => $fh (Default: \*STDOUT)
-
FileHandle, über die Informationen über die ausgeführten Beispiele ausgegeben wird.
- -objectReturn => $bool (Default: 0)
-
Liefere bei Aufruf von $exa->execute() nicht den Wert des Beispielcode, sondern ein Objekt, das den Beispielcode und den Wert enthält.
- -verbose => $bool (Default: 1)
-
Gib Informationen über die ausgeführten Beispiele auf der FileHandle -fileHandle aus.
Description
Instantiiere ein Example-Objekt und liefere eine Referenz auf dieses Objekt zurück.
Variablen setzen
setVariable() - Setze Variable für Beispielcode-Ausführung
Synopsis
$exa->setVariable(@keyVal);
Description
Setze Variable, so dass die folgende Kommando-Ausführung (Methode execute()) im Kontext der Klasse Quiq::ExampleCode ausgeführt werden kann. Die Methode liefert keinen Wert zurück.
Anstelle mittels dieser Methode, können die Variablen auch beim Aufruf selbst mit der Option -variables angegeben werden.
Example
$exa->setVariable(
obj => $obj,
x => $x,
y => $y,
);
Beispielcode ausführen
execute() - Führe Beispielcode aus
Synopsis
$res|@res = $exa->execute($code,@opt);
Options
- -asStringCallback => $subRef (Default: undef)
-
Subroutine-Referenz, die das Resultat des Beispiel-Code in eine Stringrepräsentation wandelt, die auf dem Bildschirm ausgegeben werden kann.
- -listContext => $bool (Default: Wert von wantarray)
-
Führe den Beispiel-Code im List-Kontext aus. Eine explizite Setzung ist nur im Falle von -objectReturn=>1 nötig
- -objectReturn => $bool (Default: 0)
-
Liefere bei Aufruf von $exa->execute() nicht den Wert des Beispielcode, sondern ein Objekt, das den Beispielcode und den Wert enthält.
- -variables => \@keyVal (Default: [])
-
Setze die angegebenen Variablen im Ausführungskontext des Beispiel-Code.
- -verbose => $bool (Default: Konstruktor-Setzung)
-
Gib Informationen über die ausgeführten Beispiele auf der FileHandle -fileHandle aus.
Description
Führe Beispielcode $code aus und liefere das Resultat der Ausführung $res (Skalar-Kontext) oder @res (Listen-Kontext) zurück.
Ist beim Konstruktor die Option -verbose gesetzt worde, wird zusätzlich der Beispielcode und das Resultat ausgegeben.
Example
Der Aufruf
$cmd = $exa->execute(q|
$ffm->videoToImages('video.mp4','img',
-aspectRatio => '4:3',
-framestep => 6,
-start => 3,
-stop => 10,
);
|);
führt zu der Ausgabe
$ffm->videoToImages('video.mp4','img',
-aspectRatio => '4:3',
-framestep => 6,
-start => 3,
-stop => 10,
);
=>
ffmpeg -y -loglevel error -stats -i 'video.mp4'
-vf 'framestep=6,crop=ih/3*4:ih'
-ss 3 -t 7 -qscale:v 2 'img/%06d.jpg'
Der Text nach '=>' ist der gelieferte Wert $cmd.
VERSION
1.206
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2022 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.