![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
以下のPHPソースをPerlで書き直したいのですが、Perlのコンストラクタがイマイチわからないので
どなたかご教授ください。
可能であれば以下のソースのperlバージョンを記載して頂けると幸いで御座います。
○呼び出し側
・index.inc
require_once('common.inc');
require_once('db.inc');
class index {
var $objCommon= '';
var $objDB= '';
function index() {
$this->objCommon = new common;
$this->objDB = new db("mysql");
}
function main() {
//DB接続
$db_connect = $this->objDB->connect();
//DBから値を取得
$data = $this->objDB->sample($db_connect);
}
}
○呼び出される側
・db.inc
class db{
var $db_dsn_type;
function db_wrap($db_type){
$this->db_dsn_type = $db_type;
$this->objCommon = new common;
}
各function
}
・common.inc
class common{
各function
}
※コンストラクタなし
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
コメント付きで、最小単位のオブジェクトでいきましょうか。
・PerlObj.pm
### Perlにおいて、クラスはただのパッケージであり、
package PerlObj;
sub hajimeruzamasuyo { # ※コンストラクタは、普通はnewにしましょう
my $class = shift;
my $self = {};
### オブジェクトはただのblessされたリファレンスであり、
return bless($self, $class);
}
### そしてメソッドは第一引数にオブジェクトをとるただのサブルーチンである。
sub ikudegannsu {
my $self = shift; # 第一引数(自分自身)
print "funnga-!";
}
1; # 真であるという、お約束で必須。
・sample.pl
use PerlObj;
my $obj = PerlObj->hajimeruzamasuyo;
$obj->ikudegannsu; # 実行結果:funnga-!
要するに、コンストラクタの中身は何もなくとも、最低3行のコピペで動きます。
あとは「 -> 」を付けて、サブルーチン呼び出すだけですね。
上の二つのファイルを同じディレクトリに置けば動きます(全角スペースは消してください)。
perl -le 'print for @INC'で表示されるパスに放り込めば
どこからでも使えるようになります(rootいりますが)。
初期値とかパラメータとかアクセサとか、或いは引数を受けるとか、
そういう必要が出たらFizzBuzzを参考にして下さい。
No.1
- 回答日時:
「書き方」だけでいいですか?
こんなカンジです。
package Fizz::Buzz;
use strict;
use warnings;
use Class::Accessor "antlers";
# アクセサ
has Fz => (isa => 'Int', is => 'ro');
has Bz => (isa => 'Int', is => 'ro');
has FBz => (isa => 'Int', is => 'ro');
has start => (isa => 'Int', is => 'rw');
has end => (isa => 'Int', is => 'rw');
sub new {
my $proto = shift;
my $class = ref $proto || $proto;
my ($i, $j) = @_;
my %param = init($i, $j);
my $self = { %param };
return bless($self, $class);
}
sub init {
my ($i, $j) = @_;
my %param = (
Fz => 3,
Bz => 5,
FBz => 15,
start => $i || 1,
end => $j || 100,
);
}
sub z {
my $self = shift;
my $i = shift || $self->{start};
my $j = shift || $self->{end};
while ( $i <= $j ) {
if ( $i % $self->{FBz} == 0 ) { print "FizzBuzz\n"; }
elsif ( $i % $self->{Fz} == 0 ) { print "Fizz\n"; }
elsif ( $i % $self->{Bz} == 0 ) { print "Buzz\n"; }
else { print $i, "\n"; }
$i++;
}
}
1; # 必須。
・fizzbuzz.pl
#!/usr/bin/env perl
use Fizz::Buzz;
my $fb = Fizz::Buzz->new();
$fb->z;
## 初期値1~100から変える場合
# my $fb = Fizz::Buzz->new(100, 200); # newするときに変える
# $fb->start(100); # startを変える
# $fb->end(200); # endを変える
# $fb->z(100, 200); # 実行時に変える
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) laravel 本番環境でメールが送れません。 1 2023/02/17 17:57
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- その他(プログラミング・Web制作) pythonでDBのカラム名で取得したオブジェクトの値を表示したい 1 2022/05/13 03:41
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- MySQL PHP 画像のアップロード Qiita 2 2022/11/28 04:44
- JavaScript 【jquery】EasyUIのSubGridにMySQLのテーブルデータを表示&編集にしたい 5 2022/05/02 13:10
- JavaScript JAVASCRIPT 2 2022/04/15 15:10
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VHDLについてですが何がお...
-
Perl LWPでのIPv6エラー
-
条件分岐によってuseやrequire...
-
Excel VBAでリンク切れをチェッ...
-
Excel VBA 『Call』で呼び出す...
-
例外処理のフローチャートの記...
-
ユーザー定義関数に#NAME?が返...
-
VBAでoutlook365が起動しません。
-
VBAで別モジュールへの変数の受...
-
モジュールの最大数はいくつな...
-
ユーザーフォームに最小化・最...
-
VBでグローバル変数を宣言するには
-
'Range'メソッドは失敗しました
-
Excel VBAで、ユーザーフォーム...
-
サブルーチンを認識しません。
-
エクセルVBAでシートモジュール...
-
Excelシート内セル記述の違いに...
-
perl起動方法
-
【vba】フォームに書いてあ...
-
Excel VBA 定義されたプロージ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Perlでgoogle newsのRSSを取得2
-
Web::Scraperの使い方で
-
mechanizeのタイムアウト処理に...
-
VHDLについてですが何がお...
-
PerlのWeb::Scraperと正規表現...
-
Perlで作成したCGIについて
-
Perl/Tk Entry に対して見出し...
-
python wxpythonについて質問です
-
条件分岐によってuseやrequire...
-
TwitterAPI1.1でGetメソッド(...
-
Perl/TkでURLを既定のブラウザ...
-
Perl/TkのWWW::MechanizeのGET...
-
LWP::Simpleでのgetについて
-
Perl LWPでのIPv6エラー
-
perlでhtmlファイルを取得した...
-
perlでのオブジェクト指向の書き方
-
Perl webのテキストボックスに...
-
Win32でInputBoxを実装するには?
-
Perl での XML 処理での DTD 宣...
-
ネストされているRSSのデー...
おすすめ情報