§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. そのカフェの名前を自由に考えてください。