
§2. 大規模なプログラムの作成
do → require → package
perl -V
perl -I/home/yto/...
§3. リファレンスの基礎
\@skipper
@{$items} _ @$items
$$items[1] _ $$items->[1]
$root->[2]->[1]->[0] _ $root->[2][1][0]
\%hash
$crew[0]->{'name'} _ $crew[0]{'name'}
@hash{qw(name position)}
@$hash_ref{qw(name position)} ハッシュスライス
§4. リファレンスとスコープ
リファレンスカウント
$reference_to_skipper = undef;
($ref->[-1])
my $array_ref = [ qw(a b c d e) ];
my $hash_ref = {a=>1, b=>2, c=>3};
§5. 複雑なデータ構造の操作
perl -d ("s", "x \%hash")
Data::Dumper
$Data::Dumper::Purity = 1;
Storable
grep
map
map %hash = map {$_, 3 * $_} @input_numbers;
§6. サブルーチンのリファレンス
my $ref_to_greeter = \&skipper_greets;
&{$ref_to_greeter}("Gilligan")
&$ref_to_greeter("Gilligan")
$ref_to_greeter->("Gilligan")
$sub_ref = sub { ... }
File::Find でコールバック、クロージャの説明
sub create {my $count; return sub {print ++$count}}
{my $count; sub count_one {++$count}} count_one();
§7. リファレンスの実用的な使用方法
sort {$a <=> $b} @array
シュワルツ変換(Schwartzian Transform)
再帰的に定義されたデータ
§8. オブジェクトの基礎
Class->method(@args) _ Class::method("Class", @args)
@ISA
SUPER
§9. オブジェクトとデータ
(あとで)
§10. オブジェクトの破棄
(あとで)
§11. オブジェクトの高度な使用方法
(あとで)
§12. モジュールの使用方法
File::Basename
use File::Basename (); my $base = File::Basename::basename($path);
File::Spac
Math::BigInt
use lib "/home/yto/lib";
Exporter
@EXPORT, @EXPORT_OK
use CGI qw(param); my $f = param("foo");
§13. ディストリビューションの作成
h2xs -XAn Island::Plotting::Maps
§14. テスト
リグレッションテスト
Test::Harness
Test::Simple
Test::More
ok, cmp_ok, like, isa_ok, can_ok, TODO: { }
§15. CPANへの登録
Comprehensive Perl Archive Network
PAUSE (Perl Authors Upload Server) ID
$hash_ref{qw(name position)} → @$hash_ref{qw(name position)}
#!/usr/bin/perl
use strict;
use warnings;
use Storable qw(nstore retrieve);
my ($first, $second);
$first->{uhyo} = {
'abc' => 123,
'xyz' => 9,
};
$first->{hogera} = {
'AAAAA' => [1, 2, 3],
'ABCDEF' => [60,1],
'W002' => [9, 1, 2],
};
test_print($first);
nstore [ $first->{uhyo}, $first->{hogera} ], "a.dat";
($second->{uhyo}, $second->{hogera}) = @{retrieve "a.dat"};
test_print($second);
sub test_print {
my ($ref) = @_;
while (my ($key, $value) = each %{$ref->{uhyo}}) {
print "1: $key => $value\n";
}
while (my ($key, $value) = each %{$ref->{hogera}}) {
print "2: $key => @$value\n";
}
}
perl -MStorable -MData::Dumper -e 'print Dumper(retrieve shift)' a.dat
Always use nstore and nfreeze instead of store and freeze.おお、なるほど! これでエンディアンで悩まされなくて済むわけですね。
常にnstoreとnfreezeを使う事。storeとfreezeではなく。
use Storable;
store [ $first->{uhyo}, $first->{hogera} ], "a.dat";
「テクノロジーは生活をどう変えるか」をテーマに交流型会議イベントをというわけで、参加予定です。5月16日19:30から。
開催します。そして今回ご協力いただくのはソニーさんです。
ときは2007年。新しいカフェが始まり、大流行しました。モバイルユーザーに大人気のこのカフェにはデジタル生活を支援するための3つの仕掛けがありました。(1) 電源使い放題、(2) ネットつなぎ放題、に続く、三つめの仕掛けと、そのカフェの名前を教えてください。(via http://blog.academedia.jp/?eid=499887)
Q1. モバイルユーザーに人気の三番目の特徴を教えてください。
Q2. そのカフェの名前を自由に考えてください。