- ベストアンサー
Perlで定義済みの関数名を使った場合の警告について
新しいパッケージで、同じ名前の関数名を定義した場合 Subroutine tmpnam redefined at というメッセージが 表示されますが、もともと同名の関数名は定義してはいけないのでしょうか?できる(オブジェクト指向の考え)のでしたら、どのようにすれば、警告なしのスマートな記述になるのでしょうか? package NewPack; use POSIX; sub tmpnam{ my $fname = "new-file" . POSIX::tmpnam; return $fname; }
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
#!/usr/bin/perl -w { package NewPack; use strict; # use POSIX; use base qw( POSIX ); # POSIX を継承 sub new { return ( bless {} ); } sub tmpnam { my $self = shift; my $fname = "new-file" . POSIX::tmpnam(); return $fname; } sub DESTROY {} } package main; print NewPack->new()->tmpnam(); # 又は print NewPack::tmpnam(); exit; __END__ スマートかどうかは判りませんが、 とりあえずこんな感じで、POSIX を継承すると動くようです。