MAIN関数からのPerl 6コマンドラインインタラクション

Unix環境では、多くのスクリプトがコマンドラインから引数を取得します。 Perl 6では、それらの処理は非常に簡単です。



$ cat add.pl
      
      





  sub MAIN($x, $y) { say $x + $y }
      
      





  $ perl6 add.pl 3 4 7 $ perl6 add.pl too many arguments Usage: add.pl xy
      
      







MAIN関数を作成し、パラメーターから署名を設定するだけで、$ xおよび$ y関数への引数に渡すコマンドラインパーサーと、正しいスクリプト呼び出しに関するメッセージが自動的に取得されます。



このメッセージは、追加のUSAGE関数を追加することで構成できます。



  $ cat add2.pl
      
      





  sub MAIN($x, $y) { say $x + $y } sub USAGE() { say ": add.pl <num1> <num2>"; }
      
      





  $ perl6 add2.pl too many arguments : add.pl <num1> <num2>
      
      







MAIN関数をマルチとして宣言することにより、代替の構文を指定したり、定数の値に応じて構文を使用したりできます。



  $ cat calc
      
      





  #!/usr/bin/env perl6 multi MAIN('add', $x, $y) { say $x + $y } multi MAIN('div', $x, $y) { say $x / $y } multi MAIN('mult', $x, $y) { say $x * $y }
      
      





  $ ./calc add 3 5 8 $ ./calc mult 3 5 15 $ ./calc Usage: ./calc add xy or ./calc div xy or ./calc mult xy
      
      







名前付きパラメーターはオプションに対応します。



  $ cat copy.pl
      
      





  sub MAIN($source, $target, Bool :$verbose) { say " '$source'  '$target'" if $verbose; run "cp $source $target"; }
      
      





  $ perl6 copy.pl calc calc2 $ perl6 copy.pl --verbose calc calc2  'calc' to 'calc2'
      
      







パラメーターをBoolとして宣言すると、値の転送がキャンセルされます。 Bool型の制限がない場合、値がそれに渡されます。



  $ cat do-nothing.pl
      
      





  sub MAIN(:$how = '') { say "  ,    $how"; }
      
      





  $ perl6 do-nothing.pl   ,     $ perl6 do-nothing.pl --how=   ,     $ perl6 do-nothing.pl what? Usage: do-nothing.pl [--how=value-of-how]
      
      







一般に、Perl 6はコマンドラインパーサーの組み込み機能を提供し、特別な関数とその署名を単純に宣言したときにプログラムの適切な使用を報告します。



All Articles