2. Perl6-変数の操作、匿名ブロック
3. Perl6-条件付きステートメント、ループ
4. Perl6-関数を使用する
5. Perl6-クラス
そして、長い休憩の後、私は6番目の真珠の研究で戻りました。 今回は、ユーザーと対話する方法、ファイルの操作方法、スクリプト全体をさまざまなモジュールに分割する方法を検討することにしました。
Perl6では、2つの関数を使用して画面にテキストを表示できます。
say 'text'; print "text\n";
これらの違いは、例から既に理解しているように、たとえば、渡されるすべての引数の出力の後に改行が自動的に追加されるのに対して、printはすべてを1行で印刷します。
ただし、これらの関数は実際にはIO()オブジェクトのメソッドであり、メソッドが呼び出されるオブジェクトが指定されていない場合、$ * OUTオブジェクトが使用されます
$*OUT.say("Hello"); $*OUT.say: 'Hello';
$ * INオブジェクトは、キーボードからテキストを読み取るために使用されます。
このオブジェクトのメソッドは以下を取得します:
my @mas = $*IN.lines; say @mas.elems;
この例では、すべての行がキーボードから読み取られ、入力の末尾は^ zです。
次の例では、1行のみを読み取ります
my $str = $*IN.get; say $str;
ファイルを操作するには、変数$ * OUTおよび$ * IN-IO()と同じ型のオブジェクトを返すopen関数が使用されます。
my $file = open 'D:/test.txt', :r;
オープニングモードを選択するには、名前付き引数が使用されます:r ,: w ,: a which can be grouped
モード:rのみが選択されている場合、指定されたファイルfileが存在しない場合、スクリプトの実行はエラーで終了することも考慮する価値があります。
上記の名前付きパラメーターは一意ではありません。 たとえば、chomp(False)を指定できます。行末の文字は読み取り行から削除されません。 ドキュメントで他のパラメーターについて読むことができます。
IO()クラスには、ファイル内の行番号の取得など、いくつかの追加メソッドが含まれています。 必要に応じて、ドキュメントで確認することもできます。
モジュールの作成
モジュールを作成するには、moduleキーワードを使用します。
module MyModule1; module MyModule2 {...};
このモジュールを接続するスクリプトで使用可能な関数を示すために、次のエクスポート構成が使用されます。
module MyModule; sub HiddenSub {...}; sub ExportedSub is export {...};
そのため、このモジュールを接続すると、ExportedSub関数のみを呼び出すことができます
モジュールはuse moduleNameコマンドで接続されます。
エクスポートが必要な場合、条件を考慮することもできます。
module ModuleName; sub Test1 is export(:myConst) {...}; sub Test2 is export(:myAnotherConst, :myAdditionalConst) {...}; sub Test3 is export(:myAdditionalConst); sub Test4 is export(:MANDATORY) {...};
次のように接続できます
use ModuleName :myConst, :myAnotherConst;
:指定されたパラメーターに関係なく、MANDATORYはオブジェクトをエクスポートします。
パラメータが指定されている場合:myConst、Test1、Test2、Test4がインポートされます
ただし、指定する場合
use ModuleName :myAnotherConst, :myAdditionalConst
その後、コンパイルエラーが発生します-Test2関数が再インポートされます
指定する場合
class MyClass is export { method MyMethod {...} }
すべてのクラスメソッドが自動的にエクスポートされます。
コンパイル時にuse connectモジュールを使用することも言及する価値があります。 それに加えて、スレッドがこの命令に到達したときにのみ、スクリプトの実行中にモジュールを接続するrequire関数がありますが、何らかの理由で単一の例を実行することができませんでした。