The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Prty::Example - Führe Beispielcode aus

BASE CLASS

Prty::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 = Prty::Example->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 = Prty::Example->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

Instanziiere 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 Prty::Example 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.

AUTHOR

Frank Seitz, http://fseitz.de/