#!/usr/local/bin/perl use strict; use warnings; # Data::Dumper はある変数のデータ構造を # Perl のシンタックスで表現してくれるもので、 # デバッグ時など普通によく使う。 use Data::Dumper; #require Data::Dumper; #--------------------------------------------------------- print "Content-type: text/html; charset=utf-8\n\n"; # \n一つでは、表示異常となる。 print "\n"; print "\n"; print "CGIのテスト\n"; print "\n"; print "\n"; print "u------------------
\n"; my $data = { name => 'Ultra Seven', human => 'Dan Moroboshi', transform => 'glasses', power => ['Emerium Beam', 'Eye Slugger', 'Wide Shot'], }; print Dumper $data; print "
\n"; #====================================== my $scal0 = 'a'; my @array = ('a', 'b', 3, 'z'); my %hash = ('i'=>'い', 'j'=>'じぇー', 'k'=>'けー'); print "---------
\n"; print Dumper $scal0; print "
\n"; print "---------
\n"; #リファレンス渡しにしているのは、複数の引数を渡したと見なされ無い様にするため。 print Dumper \@array; print "
\n"; print "---------
\n"; #ハッシュも同じ様な理由で、リファレンス渡しにしている。 print Dumper \%hash; print "
\n"; print "---------
\n"; # 型グロブ # *typedglob; # シンボルテーブルのエントリーを表現する。 # 名前が同じで、ファニー文字($, @, %)だけが異なる変数 our $num = 11; our @num = (12, 13); our %num = (key => 14); # 名前が同じサブルーチン sub num { return 15; } print "1-1: シンボルテーブルから、変数にアクセスする。
\n"; my $num_symbol = ${$main::{num}};# ${ } で括ると、スカラーのエントリ my @num_symbol = @{$main::{num}};# @{ } で括ると、配列のエントリ my %num_symbol = %{$main::{num}};# %{ } で括ると、ハッシュのエントリ print "1-2: シンボルテーブルから、サブルーチンを呼び出す。
\n"; my $ret_symbol = &{$main::{num}}; # &{ } で括ると,サブルーチンのエントリ print Data::Dumper->Dump([$num_symbol], ['*num_symbol']); print "
\n"; print Data::Dumper->Dump([\@num_symbol], ['*num_symbol']); print "
\n"; print Data::Dumper->Dump([\%num_symbol], ['*num_symbol']); print "
\n"; print "\$ret_from_symbol = $ret_symbol
\n\n"; print "2-1: 型グロブから、変数にアクセスする。
\n"; my $num_typedglob = ${*main::num}; # ${ } で括ると、スカラーのエントリ my @num_typedglob = @{*main::num}; # @{ } で括ると、配列のエントリが my %num_typedglob = %{*main::num}; # %{ } で括ると、ハッシュのエントリ print "2-2: 型グロブから、サブルーチンを呼び出す。
\n"; my $ret_typedglob = &{*main::num}; print Data::Dumper->Dump([$num_typedglob], ['*num_typedglob']); print "
\n"; print Data::Dumper->Dump([\@num_typedglob], ['*num_typedglob']); print "
\n"; print Data::Dumper->Dump([\%num_typedglob], ['*num_typedglob']); print "
\n"; print "\$ret_from_typedglob = $ret_typedglob
\n\n"; my $name = 'taro'; my $persons_ref = [ ['Tomo', 16], ['Ken', 28] ]; my $age_hash_ref = { Tomo => 16, Ken => 28, }; # 1: スカラー変数を出力する print "1 : スカラー変数を出力する
\n"; print Data::Dumper->Dump([$name] , ['$name']); print "
\n"; # 2 配列のリファレンスを出力する print "2 : 配列のリファレンスを出力する
\n"; print Data::Dumper->Dump([$persons_ref], ['$persons_ref']); print "
\n"; # 2' 配列のリファレンスをデリファレンスして出力する print "2' : 配列のリファレンスをデリファレンスして出力する
\n"; print Data::Dumper->Dump([$persons_ref], ['*persons']); print "
\n"; # 3 ハッシュのリファレンスを出力する print "3 : ハッシュのリファレンスを出力する
\n"; print Data::Dumper->Dump([$age_hash_ref], ['$age_hash_ref']); print "
\n"; # 3' ハッシュのリファレンスをデリファレンスして出力する print "3' : ハッシュのリファレンスをデリファレンスして出力する
\n"; print Data::Dumper->Dump([$age_hash_ref], ['*age_hash']); print "
\n"; # 4 変数をまとめて出力する print "4 : まとめて出力
\n"; print Data::Dumper->Dump( [$name, $persons_ref, $age_hash_ref], [qw/$name *persons *age_hash/] ); print "
\n"; print Data::Dumper->Dump( [$name, $persons_ref, $age_hash_ref], [qw/$名前 *人名 *年齢/] ); print "
\n"; print "d------------------
\n"; print "\n"; print "\n";