Optional parameters


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.

examples/subroutines/optional_params.p6
#!/usr/bin/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;
}


Copyright 2006, 2007, 2008, 2009, 2010 Gabor Szabo http://szabgab.com/ Index | TOC
If you are interested in on-site trainings by the author, please contact me directly.

Online courses:

Would you like to get
updated when I publish
the next article?

Follow me:

Google Plus Twitter RSS feed