Camelia
Prev: Multiple signatures

Optional parameters

Note! This site is about Perl 6.
If you are looking for a solution for the current production version of Perl 5, please check out the Perl 5 tutorial.

    multi sub process_template($input, %params?) {

    multi sub process_template($input, $output, %params?) {

If we defined our functions that way we could call

    process_template("from.tmpl", "to.html");

and it would know how to find the right subroutine leaving the %params hash empty.

Side note: this part is not yet implemented so the above code won't yet work.

There is a lot more one can do with signatures but I think this is enough for today.

Question mark (?) after the variable name means it is an optional varible.

    multi sub process_template($input, %params?) {

tutorial/subroutines/optional_params.p6

#!/usr/bin/env perl6
use v6;

# search the text within a file return 1 if found, 0 if not
sub search ($text, $file) {
    my $fh = open $file, :r;
    for $fh.readline -> $line {
        if index($line, $text) > -1 {
            return 1;
        }
    }
    return 0;
}

# optional parameter
sub search2($text, $file, $all?) {
    my $fh = open $file, :r;
    my $cnt = 0;
    for $fh.readline -> $line {
        if index($line, $text) > -1 {
            return 1 if not $all;
            $cnt++;
        }
    }
    return $cnt;
}


The Perl 6 Tricks and Treats newsletter has been around for a while. If you are interested to get special notification when there is new content on this site, it is the best way to keep track:
Email:
Full name:
This is a newsletter temporarily running on my personal site (szabgab.com) using Mailman, till I implement an alternative system in Perl 6.
Gabor Szabo
Written by Gabor Szabo

Published on 2012-01-01


Prev: Multiple signatures

Comments

In the comments, please wrap your code snippets within <pre> </pre> tags and use spaces for indentation.
comments powered by Disqus
Suggest a change
Elapsed time: 2.7907294

Perl 6 Tricks and Treats newsletter

Register to the free newsletter now, and get updates and news.
Email:
Name: