• ベストアンサー

メソッドが返す型を調べるにはどうしたらよいのでしょうか?

メソッドが返す型(配列、スカラー、ハッシュ、リファレンスなど)を調べるにはどうしたらよいのでしょうか? どなたかご存じの型教えていただけると嬉しいです _ _

質問者が選んだベストアンサー

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.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)

回答No.3

#2です。ちょっと補足です。 実際は、わざわざリファレンス用の変数を用意しなくても良いです。 >perl -e 'print ref( \$a )' SCALAR

回答No.2

一度リファレンス変数に入れれば、「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)
回答No.1

うろ覚え・・・ [戻り]=ref([式]); でダメでしたっけ? 「REF」が返ればリファレンス 「SCALAR」ならスカラー変数 「ARRAY」なら配列 「HASH」ならハッシュ だったような・・・現状確認できる環境がないので、参考程度に・・・

関連するQ&A