Perl::コールバックとか

引き続きリャマ本とアルパカ本から

どうも囲いの間にスペース開けたくなっちゃう。


use strict;
use warnings;

use 5.010;

my $subrutine = sub {

my $name = shift;
say "My name is : $name ";

};

$subrutine->("watashi");


my @names = qw( ore washi wai );

for (@names){

$subrutine->($_);

}

結果


My name is : watashi
My name is : ore
My name is : washi
My name is : wai

これはいつも通り。
関数の中で関数を実行する。コールバック的なもの。


#!/usr/bin/env perl

use strict;
use warnings;
use Data::Dumper;

use 5.010;


sub hello {

say "Hello";

};

sub goodbye {

# same mean
# my $hoge = shift;
# $hoge->();

$_[0]->();

say "Goodbye";

};

&goodbye(\&hello);


結果


Hello
Goodbye

関数の中に関数を入れることで、
後で実行することができると。


sub hello_name {
my $name = shift;
say "Hello $name";
};

&goodbye(\&hello_name("hoge"));

一つ目の関数に引数与えてそれをコールバックするのはどうやるんだろう。