NAME

Quiq::ExampleCode - Führe Beispielcode aus

BASE CLASS

Quiq::Hash

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.171

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2020 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.