
Perlのクラスとそのインスタンスについて疑問があります。
newでインスタンスを生成して、それを代入した場合には
オブジェクトはコピーされるのでしょうか?
$a = new MyClass;
$b = $a; # aをコピーしてbを作る?
この状態の時にaとbが同じインスタンスを指しているのか、
コピーされた別のインスタンスを指しているのかわかりません。
コピーされるとして、逆にコピーしない方法はありますか?
PHPでいうと以下の書式のことがしたいのです。
$b =& $a;
リファレンスを使えばできそうですが、なんだか2回コピーしている
ような気がします。
$ref_b = \$a;
$b = $$reb_b;
PHPでいう is_a のような関数が見つけられなかったので、
どうやって上記のことを確認すればよいのかわかりません。
Perlの代入はすべてコピーと考えてよいでしょうか?
アドバイスなどいただけると幸いです。
No.2ベストアンサー
- 回答日時:
new して返ってくるのはインスタンスのリファレンスなので、Cで言うところのポインタの持ち回りと一緒です。
やっつけで↓のようなスクリプトを書いてみました。
package Foo;
sub new {
my $self;
$self = {};
$self->{value} = shift;
bless $self;
return $self;
}
package main;
my $foo = Foo::new("hello, world");
print $foo, "\n";
my $bar = $foo;
print $bar, "\n";
my $baz = Foo::new("Howdy!");
print $baz, "\n";
$baz = $foo;
print $baz, $baz->{value}, "\n";
$baz->{value} = "hogehoge";
print $foo->{value}, "\n";
実行例です。
Foo=HASH(0x1635db8)
Foo=HASH(0x1635db8)
Foo=HASH(0x1635fc8)
Foo=HASH(0x1635db8)hello, world
hogehoge
見ての通り、リファレンスを代入しても中身がコピーされることはありません。
逆に別の変数を経由して中身を書き換えると、元のものにも影響します。
No.4
- 回答日時:
オブジェクトはコピーされません。
オブジェクトのコピーは、Storableモジュールが便利です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Strawberry Perl for Windows ...
-
INDIRECT 横に再度抽出したい
-
Perlのエラーについてご教授く...
-
bashスクリプト
-
perlで2次元配列をサブルーチ...
-
Perlの全角スペース 文字化け?
-
perl の open について教えてく...
-
Perl言語について。
-
ファイルをディレクトリ分配の...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
Perlで時間の計算
-
perlについて
-
perlのrequireの動き方について...
-
perlの構文でカンマの意味が分...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
pythonにCでのexternはありますか
-
マクロの書き換え箇所がわかり...
-
c言語 グローバル変数
-
c言語、マクロについて
-
python 3.10で 同じlistに同じ...
-
Perlで変数中のエスケープされ...
-
CSVから構造体へ代入
-
UWSCにおける変数の扱い方
-
UTF-8で5~6バイトになる文字コ...
-
COBOLのCOMP形式について
-
10Mバイトて文字数に すると何...
-
char str[256]の256の意味は?
-
stable diffusionのエラー
-
Excel 1セル当りの文字数が2...
-
「1TB」のHDDに日本語は何字入...
-
DataGridViewの特定列に入力さ...
-
ピクセル,dpiから容量(バイト...
-
Excel VBA メール作成について ...
-
バイト列とバイナリ列の違いが...
-
エクセルシート名の制限を変更...
おすすめ情報