【待望】PerlユーザのためのPHP入門
■ このスレッドは過去ログ倉庫に格納されています
0001俺様
03/02/27 15:17ID:tJsRCtRD両者の違いを中心に講義してやる。
今までPerlマンセーだったやつはこれを機にPHPに変更しよう也。
質問もガンガン書いてくれ。
このPerlの文はPHPだとどう書くの?とか。
0003俺様
03/02/27 15:19ID:tJsRCtRD例えば変数の宣言、初期化をしてみよう。
$foo = 0;
頭に$をつけるところも、型を特に指定する必要がないことも、
文末は;になることもみんな一緒だ。
ほら、簡単に移行できそうに思えてきただろ?
0004俺様
03/02/27 15:31ID:tJsRCtRD<?
print "Hello, world!\n";
?>
printの意味はperlと一緒だ。
まあ、printよりecho使う人が多いがそんなに違いはない。
perlユーザならわかりやすい方が(・∀・)イイ!だろう。
プログラムの開始と終了は<?と?>で囲むんだ。
これはPHP特有だから早く覚えよう。
<?じゃなくて<?phpで囲んでもOK。将来XMLとの連携を考えるなら
後者で書く癖をつけたほうが良いとは言われている。
0005nobodyさん
03/02/27 15:37ID:8ZVFA0UHhttp://www.pink-angel.jp/betu/index.html
0006nobodyさん
03/02/27 15:39ID:???0007俺様
03/02/27 15:50ID:tJsRCtRD例えばCGI/Perlの場合、
#!/perl/bin/perl
print "Content-type: text/html\n\n";
print "Hello, world!\n";
簡単なテストスクリプトを書くときも2行目あたりのウザイのを
書く必要があったがmod_phpならそんな必要はない。
とにかく<?と?>で囲めばOKだ。
というわけで課題として、各自ローカルサーバにPHPをインストールしておこう。
PerlユーザならApacheはインストールしてあると思うのでそれを前提とすると、
http://www.php.net/downloads.php
上記サイトにある
Windows Binaries
PHP 4.3.1 zip package [5,853Kb]
を落とすのじゃ。下のPHP 4.3.1 installerの方が楽そうに見えるが
こっちはCGI/PHPとしてしか使えないから駄目。間違えるなよ。
0008俺様
03/02/27 15:55ID:tJsRCtRDどういう用途で用いるのか知らんが
PHPスクリプトをrequire()するなら当然
そっちも<? ?>は必要だぞ。
まあ、聞くより自分で確かめたほうが早いだろう。
0009俺様
03/02/27 15:59ID:tJsRCtRD詳しく解説しているところを見たほうが早いか。
始めたばかりの頃俺が参考にした所だ。
http://www.php-j.com/tutorial/install/win.php
では各自ローカルでPHPを動かせるようにしておきましょう。
その瞬間からPerlとはおさらばだ!
0010nobodyさん
03/02/27 16:05ID:???0011nobodyさん
03/02/27 17:01ID:+18aFIzUここ以外にバイナリって無いんですか?
http://www.php.net/downloads.php
0012俺様
03/02/27 17:15ID:tJsRCtRDそこのじゃ嫌なのか?
そこからで全然問題ないと思うが。
0013nobodyさん
03/02/27 17:57ID:???0014nobodyさん
03/02/27 18:00ID:oT8eTv8K0015俺様
03/02/27 20:27ID:tJsRCtRD能や予、表などの漢字を使うときに文字化けしないように
\能、\予、\表みたいな面倒な書き方をする必要があっただろう。
PHPでは大半の人がEUCの日本語コードで記述していて
そのような必要はない。
と、言うわけでEUCを読み書き・保存できるエディタを用意しておきましょう。
例えば、Windows標準のメモ帳では無理です。
まあ、ベクターとかでEUCって検索すればすぐに見つかる。
http://channel.goo.ne.jp/download/search/search.php3?MT=euc&CD=1&SW=1&OS=3&category=1&search_num=10
シェアウェアのものでよいならば秀丸やEmEditorがお奨め。
0016nobodyさん
03/02/27 21:11ID:???関数の引数にハッシュを使う方法ってありますか?
function func($key,$value){
return "$key => $value";
}
$result = func("key"=>"value");
みたいにやりたいのですが
Parse error: parse error, unexpected T_DOUBLE_ARROW
というエラーがでました。
function func($key=>$value){
return "$key => $value";
}
でも無理でした。
0017俺様
03/02/27 21:36ID:tJsRCtRDPHP固有の質問はこっちへ書き込もうぜ。
【PHP】質問スレッド Part7
http://pc2.2ch.net/test/read.cgi/php/1044478561/l50
0018nobodyさん
03/02/28 04:10ID:???$name="john";
$say=sub{return "My name is $_[0].";};
print &{$say}($name);
はPHPで書くとどうなりますか?
0020nobodyさん
03/02/28 08:36ID:???<?php
$name = "jhon";
function say($name) {return("My name is $name");}
echo say($name);
?>
0021nobodyさん
03/02/28 09:16ID:TC5rJBdjブラウザでパースもできんようになるし。
MVCにしろや。
0022俺様
03/02/28 10:31ID:???お答えサンクス。
と、いうわけでもうインストールはばっちしだと思うので
今日はユーザー定義関数についてから話そう。
超独自仕様のPerとの大きな違いの1つだ。
まあ、はっきり言っちゃえば
>>18みたいな書き方はPerlではごく普通だが
Perl知らない人から見れば何なのかさっぱりってほど特殊だ。
それに比べてPHPの>>20は他の言語
(例えばJavaとか)しか知らない人が見ても何となく理解できるだろう。
002318
03/02/28 10:35ID:???レスどうもです。
無名サブルーチンみたいなのが使いたいなと思っていたのですが、
create_function関数というのがあるみたいですね。
http://www.php.net/manual/ja/function.create-function.php
<?php
$name="john";
$say=create_function('$name','return "My name is $name.";');
print $say($name);
?>
0024俺様
03/02/28 10:51ID:???sub foo {
print "$_[0] ";
return $_[0]+100;
}
$b= &foo(100)
print $b;;
#100 200
-------------------
function foo($a) {
print "$a ";
return $a+100;
}
$b= foo(100);
print $b;
#100 200
PHPの場合は明示的に引数を記述しておく必要がある。
可変引数は配列を渡せば良いだろう。Perlも実際は@_という配列を渡しているわけだし。
まあ、こうやって見ると両方大した違いは無く見えるが
変数のスコープについて根本的な違いがあるので注意しよう。
それについては後述。
0025俺様
03/02/28 11:03ID:0fBPA0clおかげでデフォルト引数を簡単に実現できる。
<?php
function foo2($a ="俺様") {
print "$a は凄い<br>";
}
foo2("お前");
foo2();
?>
/*
お前 は凄い
俺様 は凄い
*/
引数を指定しなかったら勝手に俺様が凄くなってくれるのだ。
0026nobodyさん
03/02/28 11:04ID:???0027nobodyさん
03/02/28 11:04ID:???sub foo {
print "$_[0] ";
return $_[0]+100;
}
$b= &foo(100)
print $b;;
#100 200
-------------------
function foo($a) {
print "$a ";
return $a+100;
}
$b= foo(100);
print $b;
#100 200
PHPの場合は明示的に引数を記述しておく必要がある。
可変引数は配列を渡せば良いだろう。Perlも実際は@_という配列を渡しているわけだし。
まあ、こうやって見ると両方大した違いは無く見えるが
変数のスコープについて根本的な違いがあるので注意しよう。
それについては後述。
0028俺様
03/02/28 11:08ID:0fBPA0cl#Perl code
$a=26;
print "$aゲット";
#26ゲット
-------------
#PHP code
$a=26;
print "$aゲット";
#(何も表示されない)
----------------------
両者にはこのような違いが起きてしまう。
下はどうすればよいのか各自考えてみましょう。
出かけるので解答は夜で。
0029俺様
03/02/28 11:09ID:0fBPA0cl0030俺様
03/02/28 11:10ID:0fBPA0cl俺様はPHP歴浅いので
崩壊どころか理論自体形成されていない。
だからこのスレタイは入門だ。
間違いはがんがん指摘してクレイ!
0031nobodyさん
03/02/28 11:13ID:njt3nQcM俺はPHPすら分からない。
だから、がんがん解説してクレイ!
0032nobodyさん
03/02/28 11:19ID:???Perl/Php Translation
http://www.cs.wcupa.edu/~rkline/perl2php/
既出だったらゴメン。
0033俺様
03/02/28 11:21ID:0fBPA0clそれは便利だな。
では今後はそこに載ってないやつを指摘していくことにしよう。
0034nobodyさん
03/02/28 11:25ID:???<?php
$name = "jhon";
function say($name) {return("My name is $name");}
echo say($name);
?>
0035nobodyさん
03/02/28 11:26ID:???sub foo {
print "$_[0] ";
return $_[0]+100;
}
$b= &foo(100)
print $b;;
#100 200
-------------------
function foo($a) {
print "$a ";
return $a+100;
}
$b= foo(100);
print $b;
#100 200
PHPの場合は明示的に引数を記述しておく必要がある。
可変引数は配列を渡せば良いだろう。Perlも実際は@_という配列を渡しているわけだし。
まあ、こうやって見ると両方大した違いは無く見えるが
変数のスコープについて根本的な違いがあるので注意しよう。
それについては後述。
Perlでは関数でなくサブルーチンと呼ばれていたな。
sub foo {
print "$_[0] ";
0036nobodyさん
03/02/28 11:32ID:???変数名の後ろは全角文字でもダメみたいですね。
(半角の「.」はOKだった)
#PHP code
$a=26;
print $a."ゲット";
#26ゲット
#PHP code
$a=26;
print "$a.ゲット";
#26.ゲット
0038nobodyさん
03/02/28 12:12ID:???sub foo {
print "$_[0] ";
return $_[0]+100;
}
$b= &foo(100)
print $b;;
#100 200
-------------------
function foo($a) {
print "$a ";
return $a+100;
}
$b= foo(100);
print $b;
#100 200
PHPの場合は明示的に引数を記述しておく必要がある。
可変引数は配列を渡せば良いだろう。Perlも実際は@_という配列を渡しているわけだし。
まあ、こうやって見ると両方大した違いは無く見えるが
変数のスコープについて根本的な違いがあるので注意しよう。
それについては後述。
Perlでは関数でなくサブルーチンと呼ばれていたな。
sub foo {
print "$_[0] ";
■ このスレッドは過去ログ倉庫に格納されています