【待望】PerlユーザのためのPHP入門 (601レス)
1-

1
(2): 俺様 03/02/27 15:17 ID:tJsRCtRD(1/9) AAS
見事Perl→PHPへの脱皮に成功した俺様が
両者の違いを中心に講義してやる。
今までPerlマンセーだったやつはこれを機にPHPに変更しよう也。
質問もガンガン書いてくれ。
このPerlの文はPHPだとどう書くの?とか。
2
(2): 03/02/27 15:19 ID:??? AAS
このスレ結構ありがたいかも。
>>1
ありが?
3
(1): 俺様 03/02/27 15:19 ID:tJsRCtRD(2/9) AAS
まず、両者には似てる部分も非常に多いというのは特徴だ。
例えば変数の宣言、初期化をしてみよう。
$foo = 0;
頭に$をつけるところも、型を特に指定する必要がないことも、
文末は;になることもみんな一緒だ。

ほら、簡単に移行できそうに思えてきただろ?
4: 俺様 03/02/27 15:31 ID:tJsRCtRD(3/9) AAS
とりあえずHello, world!を出力してみるぞ。

<?
print "Hello, world!\n";
?>

printの意味はperlと一緒だ。
まあ、printよりecho使う人が多いがそんなに違いはない。
perlユーザならわかりやすい方が(・∀・)イイ!だろう。

プログラムの開始と終了は<?と?>で囲むんだ。
これはPHP特有だから早く覚えよう。
<?じゃなくて<?phpで囲んでもOK。将来XMLとの連携を考えるなら
省1
5: 03/02/27 15:37 ID:8ZVFA0UH(1) AAS
↓↓↓↓↓★ココだ★↓↓↓↓↓
外部リンク[html]:www.pink-angel.jp
6
(1): [___] 03/02/27 15:39 ID:??? AAS
PHPでrequireするファイルは必ず<?php ?>で囲まなきゃダメ?
7: 俺様 03/02/27 15:50 ID:tJsRCtRD(4/9) AAS
とりあえずCGIじゃなくてmod_phpを使っていこう。
例えばCGI/Perlの場合、

#!/perl/bin/perl
print "Content-type: text/html\n\n";
print "Hello, world!\n";

簡単なテストスクリプトを書くときも2行目あたりのウザイのを
書く必要があったがmod_phpならそんな必要はない。
とにかく<?と?>で囲めばOKだ。

というわけで課題として、各自ローカルサーバにPHPをインストールしておこう。
PerlユーザならApacheはインストールしてあると思うのでそれを前提とすると、
省6
8: 俺様 03/02/27 15:55 ID:tJsRCtRD(5/9) AAS
>>6
どういう用途で用いるのか知らんが
PHPスクリプトをrequire()するなら当然
そっちも<? ?>は必要だぞ。

まあ、聞くより自分で確かめたほうが早いだろう。
9
(1): 俺様 03/02/27 15:59 ID:tJsRCtRD(6/9) AAS
PHPのインストールについては
詳しく解説しているところを見たほうが早いか。
始めたばかりの頃俺が参考にした所だ。

外部リンク[php]:www.php-j.com

では各自ローカルでPHPを動かせるようにしておきましょう。
その瞬間からPerlとはおさらばだ!
10: 03/02/27 16:05 ID:??? AAS
俺様、がんがれよ。
11
(1): 03/02/27 17:01 ID:+18aFIzU(1) AAS
win用をインスコしたいのですが
ここ以外にバイナリって無いんですか?
外部リンク[php]:www.php.net
12: 俺様 03/02/27 17:15 ID:tJsRCtRD(7/9) AAS
>>11
そこのじゃ嫌なのか?
そこからで全然問題ないと思うが。
13: 03/02/27 17:57 ID:??? AAS
おお,このスレはありがたい.がんがってください.
14: 03/02/27 18:00 ID:oT8eTv8K(1) AAS
期待age
15: 俺様 03/02/27 20:27 ID:tJsRCtRD(8/9) AAS
CGI/Perlの場合は
能や予、表などの漢字を使うときに文字化けしないように
\能、\予、\表みたいな面倒な書き方をする必要があっただろう。

PHPでは大半の人がEUCの日本語コードで記述していて
そのような必要はない。

と、言うわけでEUCを読み書き・保存できるエディタを用意しておきましょう。
例えば、Windows標準のメモ帳では無理です。

まあ、ベクターとかでEUCって検索すればすぐに見つかる。
外部リンク[php3]:channel.goo.ne.jp

シェアウェアのものでよいならば秀丸やEmEditorがお奨め。
16
(1): 03/02/27 21:11 ID:??? AAS
質問なんですけど、
関数の引数にハッシュを使う方法ってありますか?
function func($key,$value){
return "$key => $value";
}
$result = func("key"=>"value");
みたいにやりたいのですが
Parse error: parse error, unexpected T_DOUBLE_ARROW
というエラーがでました。

function func($key=>$value){
省3
17: 俺様 03/02/27 21:36 ID:tJsRCtRD(9/9) AAS
>>16
PHP固有の質問はこっちへ書き込もうぜ。

【PHP】質問スレッド Part7
2chスレ:php
18
(5): 03/02/28 04:10 ID:??? AAS
(PerlCode)
$name="john";
$say=sub{return "My name is $_[0].";};
print &{$say}($name);

はPHPで書くとどうなりますか?
19: 03/02/28 06:25 ID:??? AAS
>>18
俺のPerl自慢。

                  つづく
20
(2): 03/02/28 08:36 ID:??? AAS
>>18
<?php
$name = "jhon";
function say($name) {return("My name is $name");}
echo say($name);
?>
21: 03/02/28 09:16 ID:TC5rJBdj(1) AAS
そんなもんをXHTMLに埋め込んだら、見苦しくて死ぬぞ。
ブラウザでパースもできんようになるし。
MVCにしろや。
22: 俺様 03/02/28 10:31 ID:??? AAS
>>20
お答えサンクス。

と、いうわけでもうインストールはばっちしだと思うので
今日はユーザー定義関数についてから話そう。
超独自仕様のPerとの大きな違いの1つだ。
まあ、はっきり言っちゃえば
>>18みたいな書き方はPerlではごく普通だが
Perl知らない人から見れば何なのかさっぱりってほど特殊だ。
それに比べてPHPの>>20は他の言語
(例えばJavaとか)しか知らない人が見ても何となく理解できるだろう。
23: 18 03/02/28 10:35 ID:??? AAS
>>20
レスどうもです。

無名サブルーチンみたいなのが使いたいなと思っていたのですが、
create_function関数というのがあるみたいですね。
外部リンク[php]:www.php.net

<?php
$name="john";
$say=create_function('$name','return "My name is $name.";');
print $say($name);
?>
24: 俺様 03/02/28 10:51 ID:??? AAS
Perlでは関数でなくサブルーチンと呼ばれていたな。

sub foo {
print "$_[0] ";
return $_[0]+100;
}
$b= &foo(100)
print $b;;
#100 200
-------------------
function foo($a) {
省11
25: 俺様 03/02/28 11:03 ID:0fBPA0cl(1/5) AAS
いちいち引数を書くとは面倒になったと言う人もいるだろうが、
おかげでデフォルト引数を簡単に実現できる。

<?php
function foo2($a ="俺様") {
print "$a は凄い<br>";
}
foo2("お前");
foo2();
?>

/*
省4
26
(1): 03/02/28 11:04 ID:??? AAS
講座スレ作ろうとする奴って大体理論が崩壊してるよな・・・。
27: 03/02/28 11:04 ID:??? AAS
Perlでは関数でなくサブルーチンと呼ばれていたな。

sub foo {
print "$_[0] ";
return $_[0]+100;
}
$b= &foo(100)
print $b;;
#100 200
-------------------
function foo($a) {
省11
28
(2): 俺様 03/02/28 11:08 ID:0fBPA0cl(2/5) AAS
これかいてる間に重要なこと思い出した。

#Perl code
$a=26;
print "$aゲット";

#26ゲット
-------------
#PHP code
$a=26;
print "$aゲット";

#(何も表示されない)
省4
29: 俺様 03/02/28 11:09 ID:0fBPA0cl(3/5) AAS
26ゲットできなかったヽ(`Д´)ノ
30
(1): 俺様 03/02/28 11:10 ID:0fBPA0cl(4/5) AAS
>>26
俺様はPHP歴浅いので
崩壊どころか理論自体形成されていない。
だからこのスレタイは入門だ。
間違いはがんがん指摘してクレイ!
31: 03/02/28 11:13 ID:njt3nQcM(1) AAS
>>30
俺はPHPすら分からない。
だから、がんがん解説してクレイ!
32
(3): 03/02/28 11:19 ID:??? AAS
結構見やすいPerl/PHPの構文比較のページ見つけました。

Perl/Php Translation
外部リンク:www.cs.wcupa.edu

既出だったらゴメン。
33: 俺様 03/02/28 11:21 ID:0fBPA0cl(5/5) AAS
>>32
それは便利だな。
では今後はそこに載ってないやつを指摘していくことにしよう。
34: 03/02/28 11:25 ID:??? AAS
>>18
<?php
$name = "jhon";
function say($name) {return("My name is $name");}
echo say($name);
?>
35: 03/02/28 11:26 ID:??? AAS
Perlでは関数でなくサブルーチンと呼ばれていたな。

sub foo {
print "$_[0] ";
return $_[0]+100;
}
$b= &foo(100)
print $b;;
#100 200
-------------------
function foo($a) {
省14
36
(1): 03/02/28 11:32 ID:??? AAS
>>28
変数名の後ろは全角文字でもダメみたいですね。
(半角の「.」はOKだった)

#PHP code
$a=26;
print $a."ゲット";

#26ゲット

#PHP code
$a=26;
print "$a.ゲット";
省1
37
(1): 03/02/28 11:33 ID:??? AAS
>>28
print "${a}ゲット";
print $a."ゲット";
echo $a,"ゲット";
38: 03/02/28 12:12 ID:??? AAS
Perlでは関数でなくサブルーチンと呼ばれていたな。

sub foo {
print "$_[0] ";
return $_[0]+100;
}
$b= &foo(100)
print $b;;
#100 200
-------------------
function foo($a) {
省15
39: 03/02/28 12:41 ID:??? AAS
シフトJISでがんがん書いてます。
40: 俺様 03/02/28 20:06 ID:R6lXT7Vm(1/2) AAS
AA省
41
(1): 俺様 03/02/28 20:12 ID:R6lXT7Vm(2/2) AAS
些細なことに見えるが、
自分はこのせいで某スクリプトを
PerlからPHPに移植する際に、
30分ぐらい睨めっこした記憶があるので。
頭の中に入れて起きましょう。

$a=26;
print "{$a}ゲット";
print $a."ゲット";
42
(2): 03/03/01 11:16 ID:5K/2+grl(1/2) AAS
先生質問です。
>>9の通りしましたがapacheが起動できません。
どうやらhttpd.confのLoadModule php4_module C:/php/sapi/php4apache.dllが原因のようです
php4apache.dllをphp4apache2.dllとしても同じでした。

WinME Apache2.0.39です
43
(1): 03/03/01 11:44 ID:??? AAS
>>42
OS側類。
44
(2): 俺様 03/03/01 12:12 ID:UE12tRyA(1/12) AAS
>>42
Apacheは2よりも1.3.27の方がいいと思う。
後はなんだろな〜
Meなんて怪しいOS使ったことないからな。
とりあえずApacheのバージョンを変えて試してみてクレイ。
45: 03/03/01 12:41 ID:5K/2+grl(2/2) AAS
>>44
ありがとうございます。1.3.27を使ったら起動できました。
46: 03/03/01 16:35 ID:??? AAS
AA省
47
(1): 03/03/01 16:36 ID:??? AAS
>>44
OS = Windowsとか思っている痛い講師がいるクソスレはココですか。
48
(1): 俺様 03/03/01 17:05 ID:UE12tRyA(2/12) AAS
>>47
世の中は理詰めだけでは解決しない。
理論ヲタになるより、わかりやすさを求める方が現実的だ。
わかるかい?
しかも、PHPと直接は関係ない。
君は文学者がテイラー展開を出来なかったら馬鹿にするだろうか?

では、今日はいよいよ変数のスコープについての説明だ。
あくまでも対象者は基本的に『Perlしか』やったことがない人のみ。
C言語など他の言語をやっている人には馬鹿見たく思われる説明になるからだ。
49
(1): 03/03/01 17:07 ID:??? AAS
>>48
>君は文学者がテイラー展開を出来なかったら馬鹿にするだろうか?

少なくとも数学者を目指す文学者がマクローリン展開を知らなければバカにするが。
50
(2): 俺様 03/03/01 17:30 ID:UE12tRyA(3/12) AAS
>>49
俺様はべつにオペレーティングシステムのエキスパートを目指してはいないッポ。

#Perlscript

sub foo{
$a = 100;
print "$a,";
$a++;
}

&foo();
print $a;
省3
51
(1): 俺様 03/03/01 17:34 ID:UE12tRyA(4/12) AAS
#PHPscript

<?php
function foo(){
$a = 100;
print "$a,";
$a++;
}

foo();
print $a;

?>
省3
52: 俺様 03/03/01 17:41 ID:UE12tRyA(5/12) AAS
同様の例です。

#Perl

sub hoge{
print $a;
}
$a="俺様";
&hoge;
----------
#PHP

function hoge(){
省6
53
(2): 03/03/01 17:47 ID:??? AAS
>>50
>俺様はべつにオペレーティングシステムのエキスパートを目指してはいないッポ。

いや、エンジニアでなくても車=ベンツとか思ってる奴はアホなわけで。

教養ではなく常識なのよ。常識。
1-
あと 548 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.030s