Перейти к основному содержанию
Тема: [Perl6] Функция MAIN (Прочитано 1922 раз) предыдущая тема - следующая тема

[Perl6] Функция MAIN


Необязательная функция MAIN нужна, чтобы удобнее парсить аргументы командной строки. Например вам нужно вызывать свой скрипт с такими аргументами:
hello.p6 --name=Василий --lastname=Пупкин --age=26

тогда делайте так:
# --name=John --lastname=Smith --age=100

sub MAIN(Str :$name, Str :$lastname,  Int :$age) {
    say $name // 'Unknown name';
    say $lastname // 'Unknown lastname';
    say $age // 'Unknown age';
}

Если вы вызовёте скрипт вот так:
hello.p6 qwertyui

то вылетит ошибка С ПОДСКАЗКОЙ:
Цитата
Usage:
  C:\Users\quest\CommaProjects\hello\hello.p6 [--name=<Str>] [--lastname=<Str>] [--age=<Int>]

Другие примеры с функцией MAIN изучайте в ссылках выше.

Re: [Perl6] Функция MAIN

Ответ #1
Кстати, // это оператор, а не комментарий, он проверяет переменную на defined.
say $name // 'Unknown name';
то же самое, что и
say $name.defined ?? $name !! 'Unknown name';

Re: [Perl6] Функция MAIN

Ответ #2
Ещё пример.
Вызов скрипта с одинаковыми аргументами в perl 5 и raku. Обратите внимание - в raku объём кода меньше и его читабельность лучше.

Perl 5:
#!/usr/bin/perl

use strict;
use warnings;
use feature 'say';

@ARGV == 2 or die "Please supply two parameters.";
my %hash;
my ($name, $content) = @ARGV;
$hash{$name} = $content;
say "The item is called $name and its value is $hash{$name}";

This program displays the name of the item and its value:

$ perl sym_ref_fixed.pl foo bar
Цитата
The item is called foo and its value is bar

Raku:
use v6;

sub MAIN (Str $name, Str $value) {
    my %hash = $name => $value;
    say "The item is called $name and its value is %hash{$name}";
}

This program displays the name of the item and its value:

$ perl6 sym_ref.p6 foo bar
Цитата
The item is called foo and its value is bar