• 締切済み

perlのリファレンス?はPHPではどうするのでしょうか?

以下、Perlのソースですが、これをPHPに直すとどうなるのでしょうか? use strict; use warnings; use Data::Dumper; my $Name = "テスト"; my $Width = "100"; my $Height = "200"; my $dat = [ $Name, { Width=>$Width, Height=>$Height, } ]; print Dumper($dat); sub test{ my ($aryref) = @_; $$aryref[0]{$Name}{"Width"} = $Width; $$aryref[0]{$Name}{"Height"} = $Height; } my @OBJ = (); test(\@OBJ); print Dumper(@OBJ);

  • ne5
  • お礼率4% (5/124)
  • PHP
  • 回答数1
  • ありがとう数0

みんなの回答

回答No.1

なんか求めてる物と違う気がしますが、以下はどうでしょうか。。 <?php error_reporting(E_ALL); $Name = "テスト"; $Width = "100"; $Height = "200"; $dat = array( $Name, array( 'Width'=>$Width, 'Height'=>$Height ) ); var_dump($dat); function test (&$aryref) { global $Name,$Width,$Height; $aryref[$Name]['Width'] = $Width; $aryref[$Name]['Height'] = $Height; } $OBJ = array(); test($OBJ); var_dump($OBJ);

関連するQ&A

  • Perlで参照のクリアの方法

    Perlで参照のクリアで困っているのですが、以下のソースで正しくクリア方法はありますか? use strict; use warnings; use Data::Dumper; sub test { my ($arrayref) = @_; $$arrayref[2]{'A'} = 'aaaaa'; #$$arrayref = (); # Not a SCALAR reference at test_0042.pl line 10. $arrayref = (); #←クリアしているが、Dumperするとクリアされていない } my @A = (); print Dumper(@A); print "\n"; test(\@A); print Dumper(@A); print "\n"; exit; __END__ $VAR1 = undef; $VAR2 = undef; $VAR3 = { 'A' => 'aaaaa' };

    • ベストアンサー
    • Perl
  • Perlを始めたんですが

    プログラミングを始めようと思ってPerlをしているのですが プログラムを書いて開くとすぐに画面が消えてしまいます ActivePerlというのはいれてあります 書いたプログラムはこんなものです use strict; use warnings; print "Hello world";

    • ベストアンサー
    • Perl
  • Perlで use strict して our変数

    Perl 初心者です。初めて質問します。 test_sub.pl で宣言した変数を test_main.pl から参照したくて悩んでいます。 環境 : WindowsXP / ActivePerl 5.14.2 -------------------- * test_sub.pl -------------------- #!/usr/bin/perl use strict; our $hoge = 'HOGE'; 1; -------------------- * test_main.pl -------------------- #!/usr/bin/perl use strict; require 'test_sub.pl'; print "Content-type: text/html\n\n"; print $hoge; -------------------- これを実行すると、 Global symbol "$hoge" requires explicit package name at C:/public_html/cgi-bin/test_main.pl line 7.\r というエラーが出ます。 require する前に、test_main.pl のほうで our($hoge); と宣言したり 参照する際に print $main::hoge; とパッケージを指定したりすればいけるのですが、 これらをしないとできないものなのでしょうか。 use strict; を書かなければ最初のソースでも動くのですが use strict は書きたい… 継承のようなことをしたいのです。 ちなみに以下試してみたソースです。 -------------------- * test_main.pl -------------------- #!/usr/bin/perl ######################################## # NG use strict; require 'test_sub.pl'; print "Content-type: text/html\n\n"; print $hoge; ######################################## # OK our変数を宣言しておくといける =pod use strict; our ($hoge); require 'test_sub.pl'; print "Content-type: text/html\n\n"; print $hoge; =cut ######################################## # OK 参照する際にパッケージ名を指定すればいける =pod use strict; require 'test_sub.pl'; print "Content-type: text/html\n\n"; print $main::hoge; =cut ######################################## ######################################## # NG =pod use strict; use base qw(test_sub); print "Content-type: text/html\n\n"; print $hoge; =cut ######################################## -------------------- * test_sub.pm -------------------- #!/usr/bin/perl package test_sub; use strict; our $hoge = 'HOGE'; 1; -------------------- NG パタンはどちらも Global symbol "$hoge" requires explicit package name のエラーとなります。 もしご存じの方がいらっしゃいましたら教えてください。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • perl use strict エラーにならない?

    perlの使い方を勉強しているのですが use strict;を記述すると 変数宣言が必要になるということですが 以下のように記述してもエラーになりません。 use strict;を記述すると my $a;がないと$a="Hello";で エラーになるのではないのでしょうか。 ---test.pl---- use strict; $a="Hello"; print $a; -------------- >test.pl Hello > (Windows7, ActivePerl)

    • ベストアンサー
    • Perl
  • use strictが効かない (PERL)

    たびたびお世話になっております。 PERL version 5.14.2 をWindows 7 のコマンドプロンプトから起動して使っています。 use strict; と一行目に書くと 宣言されていない変数があれば拒絶されるとのことで #!/usr/bin/perl use strict; use warnings; $a = 10; print "$a\n"; というスクリプトを書きました。が、すんなり動いてしまいます。 use strict; は どうすればうまく効くのでしょうか。 ご指導お願いします。

    • ベストアンサー
    • Perl
  • threads を使ったマルチスレッドのエラー

    threads のモジュールを使ってマルチスレッドのテストをすると下のようなエラーが 発生します。 何が原因なんでしょうか? Usage: threads->create(function, ...) at C:\testPerl\test9\test0006.pl line 11. use strict; use threads; use Data::Dumper; no strict "refs"; my $countM; for ($countM = 0; $countM < 5; $countM++){ my $test = "test".$countM; ${"thd".$countM}= threads->new(\&mtest($test)); ${"thd".$countM}->join; } print "test end.\n"; sub mtest { my $name = @_; print "$name"."\n"; threads->yield(); }

  • perl ハッシュ エラー

    現在perlの勉強中で、ハッシュの項目まできました。しかし、use strictにするとこのコードがエラーになります。 #!/usr/bin/perl use strict; use warnings; print "Content-type:text/html\n\n"; $hoge{"key1"} = "value1"; print $hoge{"key1"}; exit; ヴァージョンは5.8.9です。use strictをコメントアウトすればエラーはでません。どうしてエラーになってしまうのでしょうか?どうすればエラーを出さずに表示することができるのでしょうか?どうかご教授ください。よろしくお願いします。

    • ベストアンサー
    • Perl
  • perlで配列名を動的に作り出したい

    試しに次のようにしてみましたがエラーになりました。 #!/usr/local/bin/perl use strict; use warnings; my $mystr = "abcde"; my @{$mystr} = (1,2,3); $mystrの内容はいろい変わっていきます。 ご存知の方いらっしゃいましたらすみませんが教えてください。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • perl 5.8.8 日本語マッチ

    perl5.8.8を使っています。 日本語にマッチする正規表現を書きたいのですが、どうしてもマッチしません。 例えば、以下のファイルtest.txtから「さしすせそ」だけを抽出し、表示させたいです。 ---------test.txt-------------------------------- あいうえお かきくけこ さしすせそ たちつてと -------------------------------------------------- ----------test.pl-------------------------------- use strict; use warnings; open(FILE, 'test.txt') or die "$!"; my @file = <FILE>; close(FILE); foreach my $line (@file){ if($line =~ /^さ/){ print "$line\n"; } } ------------------------------------------------ このtest.plを実行しても「さしすせそ」を抽出することが できません。 どうしたらよいのでしょうか? 自宅の新しいバージョンのperlだとできるのですが 会社のperlは5.8.8で顧客環境でもあるのでバージョンアップも できません。 すみませんが、よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • substrの文字列の境界の動作について

    perl5.8を使っています。substrの動作について、以下の動作はperlの仕様どおりでしょうか? 以前、どこかのソースで#--1や #--2の場合はundefとなる?のを見た記憶があるのですが、文字列の境界の動作について理解していないのでよろしくお願いいたします。 $|=1; use strict; use Data::Dumper; my $str = "0123456789A"; print Dumper( substr($str, 10, 1) ); # $VAR1 = 'A'; print Dumper( substr($str, 11) ); # $VAR1 = ''; # --1 print Dumper( substr($str, 12) ); # substr outside of string at test.pl line ...  # --2 exit;

    • ベストアンサー
    • Perl

専門家に質問してみよう