この機能をサポートする言語に関する私の経験では、位置パラメーターではなく名前付きパラメーターを使用して関数を呼び出すプログラムの方が、読みやすく、維持しやすいです。
Perl にはこの機能があると思いますが、うまくいきません。
使用しているパッケージの癖ですか、それとも間違っていますか?
関数呼び出しの設定
私の最初の Perl プロジェクトは、HTML::TableExtract パッケージを使用して、HTML マークアップからテーブル データを抽出し、それをテキストとして表示することです。
次のコードは、パーサーをセットアップします。
use strict;
use warnings;
use HTML::TableExtract;
my $markup = <<MARKUP;
<table>
<tr> <th>a</th> <th>b</th> <th>c</th> </tr>
<tr> <td>1</td> <td>2</td> <td>3</td> </tr>
<tr> <td>4</td> <td>5</td> <td>6</td> </tr>
</table>
MARKUP
my $parser = HTML::TableExtract->new() ;
$parser->parse($markup) ;
ドキュメントには、メソッドを使用してコマンドプロンプトに出力をダンプし、tables_dump
パラメーター$show_content
を使用$col_sep
して、出力形式を制御できると記載されています。
tables_report([$show_content, $col_sep])
抽出されたテーブルをその深さと数とともに要約した文字列を返します。オプションで、各テーブルの抽出されたコンテンツと、$col_sep で区切られた列をダンプする $show_content フラグを受け取ります。デフォルトの $col_sep は ':' です。
tables_dump([$show_content, $col_sep])
STDOUT に情報をダンプする以外は、tables_report() と同じです。
位置パラメーターと名前付きパラメーターを使用した呼び出し
ドキュメントの順序で位置パラメーターを渡すと、期待どおりの出力が得られます。
$parser->tables_dump(1, '_') ;
列はデフォルトのコロンの代わりにアンダースコアで区切られます:
TABLE(0, 0):
a_b_c
1_2_3
4_5_6
Perl.com のAdvance Subroutines の記事に従って、パラメーターの意味を明確にするために、パラメーター名と値を含むハッシュを渡そうとしました。
$parser->tables_dump({show_content => 1, col_sep => '_'}) ;
Perl はこれを理解していません。の値を無視col_sep
し、デフォルト値で出力します。
TABLE(0, 0):
a:b:c
1:2:3
4:5:6
セパレーターを変更しないと、同じ出力が得られます。
$parser->tables_dump({show_content => 1}) ;
意味のないパラメーター名を指定しても、同じ出力が得られます。
$parser->tables_dump({tweedledum => 1, tweedledee => '_'}) ;
名前付きパラメーター スタイルを使用してこの関数を呼び出すことはできますか?