- ベストアンサー
メソッドが返す型を調べるにはどうしたらよいのでしょうか?
メソッドが返す型(配列、スカラー、ハッシュ、リファレンスなど)を調べるにはどうしたらよいのでしょうか? どなたかご存じの型教えていただけると嬉しいです _ _
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
メソッドの場合で検証してみました。 ----検証プログラム---- use strict; use Win32::OLE qw(in with); use Win32::OLE::Const 'Microsoft Excel'; $Win32::OLE::Warn = 3; my $Excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit'); my $Book = $Excel->Workbooks->Open('C:\TEMP\001.xls'); my $Sheet = $Book->Worksheets(1); my $ret = $Sheet->Range("A1:B3")->{'Value'}; # これを調べたい my $ref_ret = \$Sheet->Range("A1:B3")->{'Value'}; print "1:".ref($ret)."\n"; print "2:".ref(\$ret)."\n"; print "3:".ref($ref_ret)."\n"; print "4:".ref(\$Sheet->Range("A1:B3")->{'Value'})."\n"; $Book->Close; ----結果---- 1:ARRAY 2:REF 3:SCALAR 4:SCALAR これの正解は2番のREFです。 でも、2番の方法も完璧ではないと思います。
その他の回答 (3)
- shuyamakawa
- ベストアンサー率67% (111/164)
#2です。ちょっと補足です。 実際は、わざわざリファレンス用の変数を用意しなくても良いです。 >perl -e 'print ref( \$a )' SCALAR
- shuyamakawa
- ベストアンサー率67% (111/164)
一度リファレンス変数に入れれば、「ref」で調べられます。 >perl -e '$ref = \$a ; print ref( $ref )' SCALAR >perl -e '$ref = \@a ; print ref( $ref )' ARRAY >perl -e '$ref = \%a ; print ref( $ref )' HASH
- urdapple
- ベストアンサー率30% (9/30)
うろ覚え・・・ [戻り]=ref([式]); でダメでしたっけ? 「REF」が返ればリファレンス 「SCALAR」ならスカラー変数 「ARRAY」なら配列 「HASH」ならハッシュ だったような・・・現状確認できる環境がないので、参考程度に・・・