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

NAME

Quiq::CommandLine - Erstelle eine Unix-Kommandozeile

BASE CLASS

Quiq::Hash

SYNOPSIS

  use Quiq::CommandLine;
  
  my $c = Quiq::CommandLine->new('iconv');
  $c->addOption(
      -f => 'utf-8',
      -t => 'latin1',
  );
  $c->addString('|','enscript');
  $c->addBoolOption(
      '--no-header' => 1,
      '--landscape' => 1,
  );
  $c->addLongOption(
      '--font' => 'Courier8',
  );
  $c->addString('2>/dev/null','|','ps2pdf','-');
  $c->addArgument('/tmp/test.pdf');
  
  my $cmd = $c->command;
  __END__
  iconv -f utf-8 -t latin1 | enscript --no-header --landscape --font=Courier8 2>/dev/null | ps2pdf - /tmp/test.pdf

DESCRIPTION

Die Klasse stellt Methoden zur Konstruktion einer Unix-Kommandozeile zur Verfügung. Die Klasse ist hilfreich, wenn einzelne Bestandteile der Kommandozeile dynamisch sind, also von Bedingungen und variablen Werten abhängen.

METHODS

Konstruktor

new() - Konstruktor

Synopsis

  $c = $class->new;
  $c = $class->new($str);

Arguments

$str

Anfang der Kommandozeile.

Returns

Kommandozeilen-Objekt

Description

Instantiiere ein Kommandozeilen-Objekt und liefere eine Referenz auf dieses Objekt zurück. Mit $str kann der Anfang der Kommandozeile festgelegt werden.

Example

Erzeuge eine Kommandozeile für das Kommando enscript:

  $c = Quiq::CommandLine->new('enscript');

Kommandozeilenbestandteile hinzufügen

addArgument() - Ergänze Argumente

Synopsis

  $cmd->addArgument(@args);

Arguments

@args

Liste von Kommandozeilenargumenten.

Returns

nichts

Description

Ergänze die Kommandozeile um 0, 1 oder mehr Argumente. Leerzeichen werden vor jedem Argument hinzugefügt. Enthält ein Argument Leerzeichen oder Shell-Metazeichen, wird es Quotes eingefasst. Ist ein Argument leer (undef oder ''), wird ein Leerstring zur Kommandozeile hinzugefügt.

Example

  $c->addArgument("/tmp/preview-$$.pdf",'',"Dies ist ein Test");

ergänzt die Kommandozeile um die drei Argumente

  ... /tmp/preview-4711.pdf '' 'Dies ist ein Test'

addBoolOption() - Ergänze boolsche Optionen

Synopsis

  $cmd->addBoolOption(@boolOptions);

Arguments

@boolOptions

Liste von boolschen Optionen, bestehend jeweils aus der Option und zugehörigem Prädikat.

Returns

nichts

Description

Ergänze die Kommandozeile um 0, 1 oder mehr boolsche Optionen. Eine boolsche Option ist eine Option, die keinen Wert hat, sondern vorhanden ist oder nicht, was durch das zugeörige Prädikat bestimmt wird (siehe Beispiel).

Example

  $c->addBoolOption(
      '--no-header' => 1,
      '--landscape' => 0,
      '--truncate-lines' => 1,
  );

ergänzt die Kommandozeile um die Optionen --no-header und --truncate-lines, aber nicht um die Option --landscape

  ... --no-header --truncate-lines

addOption() - Ergänze Option und ihre Werte

Synopsis

  $cmd->addOption(@optVal);

Arguments

@optVal

Liste von Optionen, bestehend jeweils aus der Option und zugehörigem Wert.

Returns

nichts

Description

Ergänze die Kommandozeile um 0, 1 oder mehr Optionen mit zugehörigem Wert. Option und Wert werden durch ein Leerzeichen getrennt.

addEqOption() - Ergänze Option und ihre Werte

Synopsis

  $cmd->addEqOption(@optVal);

Alias

addLongOption()

Arguments

@optVal

Liste von Optionen, bestehend jeweils aus der Option und zugehörigem Wert.

Returns

nichts

Description

Ergänze die Kommandozeile um 0, 1 oder mehr Optionen mit zugehörigem Wert. Option und Wert werden durch ein Gleichheitszeichen (=) getrennt.

Example

  $c->addEqOption(
      '--columns' => 2,
      '--font' => 'Courier10',
      '--margins' => '0:0:0:0',
  );

ergänzt die Kommandozeile um die Optionen

  ... --columns=2 --font=Courier10 --margins=0:0:0:0

addString() - Ergänze Zeichenketten

Synopsis

  $cmd->addString(@strings);

Arguments

@strings

Liste von Zeichenketten.

Returns

nichts

Description

Ergänze die Kommandozeile um 0, 1 oder mehr Zeichenketten. Diese werden, mit Whitespace getrennt, unverändert zur Kommandozeile hinzugefügt.

Example

  $c->addString('2>/dev/null','|','ps2pdf','-','-');

ergänzt die Kommandozeile um

  ... 2>/dev/null | ps2pdf - -

Kommandozeile

command() - Liefere Kommandozeile

Synopsis

  $cmd = $c->command;

Returns

Kommandozeile (String)

Description

Liefere die Kommandozeile als Zeichenkette, wie sie z.B. von der Shell ausgeführt werden kann.

Hilfsmethoden

value() - Liefere Options- oder Argumentwert

Synopsis

  $str2 = $this->value($str1);

Arguments

$str1

Zeichenkette.

Returns

Shellverträglichen Wert (String)

Description

Analysiere Zeichenkette $str1 auf Whitespace und Shell-Metazeichen hin und liefere einen Wert, der gefahrlos als Optionswert oder Programmargument zur Kommandozeile hinzugefügt werden kann.

Examples

Undef:

  $c->value(undef);
  =>
  undef

Leerstring:

  $c->value("");
  =>
  ''

Zeichenkette ohne Whitespace oder Shell-Metazeichen:

  $c->value("/tmp/test.pdf");
  =>
  /tmp/test.pdf

Zeichenkette mit Whitespace und/oder Shell-Metazeichen:

  $c->value("Dies ist ein Test");
  =>
  'Dies ist ein Test'

VERSION

1.204

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.