トップページ⇒php
593コメント196KB

【待望】PerlユーザのためのPHP入門

■ このスレッドは過去ログ倉庫に格納されています
0001俺様03/02/27 15:17ID:tJsRCtRD
見事Perl→PHPへの脱皮に成功した俺様が
両者の違いを中心に講義してやる。
今までPerlマンセーだったやつはこれを機にPHPに変更しよう也。
質問もガンガン書いてくれ。
このPerlの文はPHPだとどう書くの?とか。
0514イ奄様04/02/16 19:15ID:PkrMZZ9m
>>513
それだと
"hoge1234567890hage"とかにもマッチする。
数字で始まり10個目の数字で終わるなら
$result = preg_grep("/^[0-9]{10,10}$/",$str);
0515イ奄様04/02/16 19:18ID:???
$result = preg_grep("/^\d{10}$/",$str);
でもいい
0516アノニマス04/02/16 19:35ID:O91ZKuNr
>>514,515 イ奄様
有難うございます。なるほどよく分りました。

しかも、問題が間違えているにもかかわらずよく理解してくださいました。
重ねて御礼します。

出したかった問題は、こうでした。
$result = preg_grep("/[0-9]{10,10}/",$str);
まぁ、間違ってんだから訂正は要らないんだけどね・・・。


0517nobodyさん04/02/16 21:57ID:???
それは perl でも同じ結果だろうなと。
perlとPHPで結果が違うのかと思ったよw
0518nobodyさん04/03/05 15:09ID:???
質問してもいいですか?
Perlの「undef」に相当するPHPの関数は何ですか?
マニュアル検索しても見つけられなかったのです。
スレ違いでしたらスルーでお願いします。
0519nobodyさん04/03/06 02:17ID:???
>>518
unsetじゃないかな?
0520nobodyさん04/03/08 22:21ID:???
Perlだと文字列の置換をしたときに置換されたものが$1などの変数に代入されますよね。
PHPでも同じことは出来るのでしょうか?
0521nobodyさん04/03/08 23:07ID:???
>>520
自己レスです。
preg_match_allで出来ました・・・
他にいい方法があれば知りたいです。
0522nobodyさん04/04/06 09:54ID:Rt5G2mKK
自作関数に渡した引数は、Perlでは$_[0],$_[1]...に、
JavaScriptではarguments[0]...に、入るじゃないですか。
PHPでは何に入るのでしょうか?
もしかして必ず function x($a,$b,$c) の様にする必要があるのでしょうか?
何とかして引数を配列として扱いたいのです。
0523nobody04/04/06 11:33ID:???
>>522
function ほらよ ($配列) { print_r($配列); }
ほらよ(array('a', 'b', 'c'));
0524nobodyさん04/04/06 14:51ID:???
>>523
有難う御座ります。
PHPって関数名や変数名に日本語使えたんですね 驚きました。
0525nobodyさん04/04/06 14:59ID:???
(^∀^)ゲラゲラ
0526nobodyさん04/04/18 21:32ID:???
(^∀^)ゲラゲラ
0527nobodyさん04/04/19 04:39ID:???
(^∀^)ゲラゲラ
0528nobodyさん04/04/19 13:09ID:???
(^∀^)ゲラゲラ
0529nobodyさん04/04/19 21:16ID:???
( ・∀・)σ)´Д`)>>524
0530カポコン04/04/21 13:43ID:???
http://f13.aaacafe.ne.jp/~mugen/perlvsphp/top.html

よろしこ。
0531nobodyさん04/04/21 19:32ID:???
>>530
実に頭の悪そうな文章ですね。
0532nobodyさん04/04/21 21:28ID:???
>>530
Shift_JISでスクリプトを書いてはいけない理由、
どうしてもShift_JISで書きたい場合はどのPHPをインストールすべきとか
mb_string周りのPHP.iniの設定の仕方、設定のオーバーライドの方法を解説して欲しい。

あと、PerlにもHTML埋め込みを行う方法がいくつかあるよ。
0533nobodyさん04/04/22 03:05ID:???
>>530
俺もPerlはあまり好きじゃないが
>認めざる終えません。
なんて文章書く人の言語構造をむしろ疑いたい。
0534カポコン04/04/26 10:25ID:???
>>532
その真珠のヴァージョンは何ですか?
requireを使用するとか笑わせる答えじゃないですよね?

>>533
>しかし、CやJavaなどと比べPerlの方が極力型を意識しない言語仕様
>になっているというのは認めざる終えません。
あーそんな風に書いてたんだね。そのうち、なんとか汁。

# 真珠批判やってるサイトって他にもあるもんだねー。
053553204/04/27 05:54ID:???
マジレスした自分に鬱。
0536nobodyさん04/04/30 23:59ID:um4DKqqr
perlにおいて、csvファイルを配列に取り込み、複数項目(カンマ区切りの2列目と3列目)でソートをかける為に
下記のような方法を取っていたのですが、
これをphpで行う場合、multisortでは1項目でのソートしか出来ないと
マニュアルに記述されていますが、どのような処理でなら可能でしょうか?

@DATA = sort { (split(/,/,$b))[1] <=> (split(/,/,$a))[1] || (split(/,/,$a))[2] <=> (split(/,/,$b))[2]; } @DATA;
0537nobodyさん04/05/01 06:06ID:???
>>536
http://jp.php.net/manual/ja/function.usort.php
0538nobodyさん04/05/01 07:23ID:???
>>530
あまり真面目に見ていないけど、もっと説得力ある文章になるくらい
たくさんプログラムを作ってみた方が良いんじゃないかな。
今の状態だと言語の違い以前に本当にプログラムを作った事が
あるんだろうかと疑いたくなるよ。

>>535
気にすんな
0539nobodyさん04/05/03 01:13ID:N715jxDT
ASPユーザですが、PHPへの移行への許可は頂けますか?
0540nobodyさん04/05/08 15:25ID:???
perlとPHPのどっちが偉いかとかいった下らない話題につき合うつもりはないが

http://f13.aaacafe.ne.jp/~mugen/perlvsphp/page7.htm
↑を MVC と呼ばれては碇浸透

コンテンツとデザインの分離スレにちょっと鯉 >>350
0541nobodyさん04/05/15 03:52ID:???
>>540
そいつはマジメに運営してないからほっといていいよ。
0542nobodyさん04/05/20 12:08ID:NShBOzWM
PHP普及の原因は、イスラエル・Zend社のマーケティングの成功にある。
�@Perlでは別インストールで多くの人が知らないデーターベース利用を標準で使用できるようにし、「データーベースが簡単に取り扱える」というイメージを特に強く植えつけた。
�Aウェブサイト作成への特化。例えば、セッション管理がそうだ。
�Bソースの隠蔽による著作権保護を可能にした。
データーベースを使いたいが、使い方がわからない。そこに、PHPなら使えるという情報が先に入る。これで、PHPに入った人もかなり多いはず。
PHPの言語仕様はZendに大きく左右される。
二年ほど前、PHPが出始めた頃には、変数のスコープがPerlとまったく同じ仕様だった。
もともと、Perlのソースコードを改編して作成されたPHP。
↓PHPの歴史
http://php.planetmirror.com/manual/ja/history.php
PHPには、Perlコードの退行による高速化の意図が言語のいたるところに見える。
マイクロソフトは、オブジェクト指向への対応というのが大義にVB6.0からVB.NETに言語仕様を大幅に変えた。
今後も大きく言語仕様が変わることはないのか?
オープンソースとは言っても、Zend社の
http://www.zend.com/management.php
の数人のスタップによって大きく左右される。
再帰的定義とされる「PHP:Hypertext Preprocessor」という名前にも理由がある。これは、要するに、正確には、「Perl Hypertext Preprocessor」としたいところだが、GNUの「GNU is Not UNIX」という再帰的な定義をもじったものだ。
要するに、「GPLのフリーソフトのライセンスには違反していませんよ!」と一つには主張し、また、一つには、「PHP is Not Perl」とでも言って、Zendの社としての姿勢を、先人の「Perl開発者たち」から擁護する意図があったのだろう。
Nではなく、Hなのが、そのための味噌だ!Perl開発者たちは、当然、面白くないはずだ。
PHP信奉者は、六芒星(hexagram)マークのユダヤ教にでも、入信せよ!
…といいつつ、かく言う私も、PHPに乗り遅れまいと必死だが…。(^^;)


0543nobodyさん04/05/20 16:11ID:???
↑もう5回くらい見たんだが。しかも全部IDが同じだ・・・見間違いだよな?
0544nobodyさん04/12/07 16:29:25ID:???
最近やっとphpの配列は、perlの配列のリファレンスだと考えればいいんだとわかった。
んで、phpで関数に配列を引渡すときは、配列のコピーのリファレンスを渡していると考えればいいとわかった。

だから、phpのこれは
$array[$index] = $value;

perlのこれに対応するわけじゃなく
$array[$index] = $value;

これに対応しているわけで
$array->[$index] = $value;

phpのこれは
$array = array($val1,$val2,$val3);

perlのこれに対応している
$array = [$val1,$val2,$val3];

なのでphpのこれは
function f($array){
.......
}

perlのこれに対応するわけだったんだね。
sub f{
my $array = [@{$_[0]}];
.......
}
0545nobodyさん05/03/03 01:29:07ID:eDjoFwC+
Perlのlast関数にあたるものはPHPのbreak関数かと思いますが、
next関数にあたるものは何になるのでしょうか?

ご教示いただけますと幸いです。
0546nobodyさん05/03/03 07:00:57ID:???
>>545
continue
0547nobodyさん05/03/03 09:43:42ID:???
>>545
関数じゃないよ。制御構造と呼んでくれくれたこら
0548nobodyさん05/03/03 14:56:14ID:???
>>544
おれがPHP使い始めたころと同じこと考えとるな
きっと次は$がいらないんじゃないかとか
printした時に自動で配列表示して欲しいとか
正規表現や無名関数使いずれーとか
便利な関数がイパーイあってええねとか
クラスがPerlよりはおしゃれだとか
↓
0549nobodyさん05/03/08 04:57:03ID:???
日本語を変数名に使えるようにすんなよとか
リファレンス変数とか可変変数で戸惑うとか
多重継承できないってなんだよとか
DBはいいなとか
↓
0550nobodyさん05/03/08 07:20:38ID:???
0.0.1のバージョンアップでコアに新機能を加えたあげくにエンバグって何よとか
デフォルトでハッシュな配列はステキですねとか
array_map_recursive()きぼんとか
↓
0551nobodyさん2005/11/06(日) 12:54:25ID:szZvbyxN
perl使いがPHP使いに成ってもスキル低いのには変わらないけどな。
PHP覚える時間と暇があれば、JavaとかCが使えるようにスキル磨け。
0552nobodyさん2005/11/07(月) 01:20:42ID:???
意味不明
0553nobodyさん2006/01/20(金) 19:20:58ID:???
Cはもう、使う職場が限られている気がするが
0554nobodyさん2006/03/13(月) 04:51:31ID:???
保守
0555nobodyさん2006/03/31(金) 03:55:29ID:???
保守
0556nobodyさん2006/04/27(木) 19:27:28ID:???
保守
0557nobodyさん2006/04/28(金) 03:16:17ID:???
スレの内容を勝手にまとめてみたのでうpするよ
俺様タンのレスぶっこ抜いただけなので
だめなようならすぐ消します。
txtだけどhtmlにリネームしてくだせ。

http://bebe.run.buttobi.net/up/src/be_1673.txt.html
05585572006/04/28(金) 03:19:25ID:???
HEAD内のひとつめのSTYLEタグは不要なので消しておk
0559nobodyさん2006/05/15(月) 05:54:56ID:KM0klNRe
>>557
乙。もらいます
0560nobodyさん2006/09/20(水) 11:53:55ID:uaOOSUkQ
Perlのqqみたいなの、PHPでできんか?
05615602006/09/20(水) 12:00:23ID:uaOOSUkQ
できんか・・rubyでも同様の文法はあるんだけどなぁ・・。
ヒアドキュメントは、インデントが崩れるので大袈裟でちょっと扱いにくい。
0562nobodyさん2006/09/24(日) 06:15:19ID:???
ヒアドキュメントは当然ながら、qqも必要ないもん。
0563nobodyさん2007/05/04(金) 02:57:45ID:SmDWSadW
保守
0564nobodyさん2007/05/07(月) 03:01:24ID:???
このスレの意思とは逆なんですが、
php経験があり、perl未経験です、
perlスクリプトを眺めているのですが、どうもわからない構文が多々あります。


サブルーチン if ($hoge && $> == 0);

↑これってどういう意味を表しているのでしょうか?
ifの前にサブルーチンが存在するのと、
$hoge && $> == 0 の意味がわからんです。
0565nobodyさん2007/05/08(火) 00:36:50ID:???
$>はuid
$hogeが真かつrootで実行されている時だと思う

> ifの前にサブルーチンが存在するのと、
Perlの基本的な変体文法なので入門書読め
0566nobodyさん2007/05/09(水) 21:29:36ID:+HRKvy3U
perlでハッシュの値を出力すると何故か「1/8」になってしまうんですがこれはどうすれば直せますか?
0567nobodyさん2007/09/17(月) 05:29:18ID:j/liUul9
亀だが

>566
$foo=%hoge;
print $foo;

ってなってんじゃね
鯨のハラワタが散らかってるとか言われる部分だから気にするな

perl嫌になてきた
だからといってphpも嫌だぜ
Lispでもはじめようぜ
0568nobodyさん2007/09/17(月) 14:53:34ID:???
早くもPHPユーザのためのPerl入門スレになりつつあるな
0569nobodyさん2007/09/17(月) 19:28:13ID:???
アリガ�d
0570nobodyさん2007/09/18(火) 21:48:20ID:???
基礎PHPという教本を読みながら問題を解こうとしているんですが、まったく理解できなくて
悩んでいます。
何方か指南していただけないでしょうか?
問題の内容は以下に、

内容
フォームからPOSTのメソッドを利用して「ユーザー名」と「パスワード」を送信する。
受信したファイルでは「ユーザー名」と「パスワード」の妥当性を判断してメッセージを出力する。

条件
データ送信用ファイル:input.html
データ受信用ファイル:check.php

input.htmlには2種類のテキストボックスを配置させる(txtNameとtxtPassword)
check.phpでは以下の4種類のメッセージを出力させること
ユーザー名とパスワードの組み合わせが正しい場合「認証成功!」
ユーザー名が存在しない場合「ユーザー名が存在しません」
ユーザーは存在するがパスワードが誤っている場合「パスワードが間違っています」
ユーザー名またはパスワードのいずれかが空白の場合「ユーザー名またはパスワードが未入力です」

check.phpにおけるユーザー名とパスワードの組み合わせは以下のとおりとする。(3ユーザー分)
ユーザー名:guest admin shs0000
パスワード:goma adm 0000

スクリプト内での以下の配列に格納し、プログラムによって判断を行うこと。
ユーザー名:$arrUser $arrUser = array(・・・・);
パスワード:$arrPass $arrPass = array(・・・・);

ヒントでfor,if文を使うとあります。

どうかお願いします。
0571nobodyさん2007/10/04(木) 11:12:02ID:Ba37oSfY
ここに神がいることを祈ります。

これ
↓
$a1="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ./";
$a2=substr($a1,int(rand(64)),1).substr($a1,int(rand(64)),1);
$cryptpass = crypt($pass,$a2);

をPHPで同じことさせるにはどうしたらいいのでしょうか・・・

0572nobodyさん2007/10/04(木) 11:18:40ID:???
int(rand(64)) => rand(0, 63)

これだけ代えればいけるんじゃね?
0573nobodyさん2007/10/04(木) 14:18:23ID:Ba37oSfY
>>572
あなたは神だ。
ありがとうございました^^
本当助かりました。
0574nobodyさん2007/10/07(日) 01:40:12ID:???
>>570
まずPerlでかけるのか?
かけないなら質問スレいってこい
0575nobodyさん2007/10/20(土) 02:19:47ID:???
漠然とした質問で申し訳ないが
単なるテキストファイルをincludeするだけだったら
SSIとPHPとどっちがサーバ負荷が少ないかな?
0576nobodyさん2007/10/20(土) 02:42:16ID:???
基本同じくらい


ただ、組み込むモジュールmod_includeとmod_phpではmod_phpの方が断然メモリ食う
0577nobodyさん2007/10/23(火) 00:14:10ID:???
>>576
遅くなったがありがトン

すでに構築されてるサイトを引き受ける事になったんだけど
SSIだらけだったんでちょっと気になってね
PHPの方が利便性良さそうなんで移行しようかと思ったけど静観かな
0578nobodyさん2008/05/25(日) 10:56:38ID:???
&ReadParse;
while (($key,$val) = each %in) {

って言う良く見るPerlをphpで書き直すと?
extractだとPOSTとGET両方は拾えないみたいですし。
キーごとに処理を分けるのは、phpではどうしたら?

教えて下さい神様。
0579nobodyさん2008/05/27(火) 23:52:32ID:???
if(isset($_POST)) {
while(list($key, $val) = each($_POST)) {
//POST変数が存在する数だけループ $key $valで所得->処理
}
}
if(isset($_GET)) {
while(list($key, $val) = each($_GET)) {
//GET変数が存在する数だけループ $key $valで所得->処理
}
}

かな?後、
import_request_variables("GPC","{re_ とか何か接頭辞}");
を使うとGET,POST,COOKIEを一度に変数へ展開できる。
Perlの方が良く解らないので見当はずれだったらごめん。
0580nobodyさん2008/05/28(水) 23:19:19ID:???
ありがとうございます。
上述の方法でやってみます。

助かりました!
0581nobodyさん2008/06/04(水) 07:29:17ID:???
>>578だとgetだろうがpostだろうが
すでに%inに入ってる訳だがその辺は良いのか?

>>579
俺はPHPはイマイチなんだが、$_POSTか$_GETを判別して別のハッシュに入れ
そのハッシュをeachした方が良くね?
0582nobodyさん2008/06/05(木) 21:39:46ID:???
>>581
Perlでいうハッシュ=連想配列:$QUERY{$key} = $valで、
$_POSTや$_GETは既に判別された後のハッシュと同じと解釈してますが、
実際どうなんだろう?
0583nobodyさん2008/06/06(金) 10:39:11ID:???
いや、ループの前に$_POSTでも$_GETでも1つにしちまえば
ループ自体が1つに出来るっていう話
0584nobodyさん2008/06/06(金) 11:40:29ID:???
つ $_REQUEST
0585581=5832008/06/06(金) 17:14:55ID:???
>>584
そんな便利なのあるんだな
元質問者じゃないが勉強になったよ
0586nobodyさん2008/06/16(月) 20:24:30ID:???
DMYHMS形式をエポック秒に変換したいんだすが、
Perlのtimelocal()的なものがphpでありますでしょうか?
0587nobodyさん2008/06/16(月) 21:19:36ID:???
お前は風大左衛門かw
こんな感じでどうだす?

mktime(HH,MM,SS,mm,dd,yyyy);
0588nobodyさん2008/06/16(月) 23:26:39ID:???
>>587
バッチリです!ありがとうごぜいます。
0589nobodyさん2008/06/17(火) 09:51:41ID:???
文字列の小数点以下を削除しようと思って、("3.1415"→"3")

$PI = ereg_replace("\.\d*", "", $PI);

とすると、31415になってしまいました。perlの
s/\.\d*//;
だとうまくいくのですが、何かPHPでの注意点ありんすか?
0590nobodyさん2008/06/17(火) 23:01:21ID:???
perlちとPHPとで、正規表現がちがうでよ。

$PI = ereg_replace("\.[0-9]*", "", $PI);
$PI = preg_replace("/\.\d*/", "", $PI);

こんなんどうだべ?
0591nobodyさん2008/06/17(火) 23:16:04ID:???
>>590
ズッポシです!ありがとうございました。
0592nobodyさん2010/06/19(土) 14:31:36ID:???
PHPのエラー処理は、以下の三つくらいがあげられますが、
どれを使うのが一番なのでしょうか?
・tryとcatch
・set_error_handler
・PEAR_Error
自分は、try catchが一番いいと思いつかっています。
0593 忍法帖【Lv=40,xxxPT】(1+0:8) 【19.5m】 電脳プリオン ◆3YKmpu7JR7Ic 2012/11/24(土) 18:32:42.67ID:???
  ∧_∧
  ( ・∀・)      | | ガガッ
 と    )      | |
   Y /ノ      .人
    / ) .人   <  >_∧∩
  _/し' <  >_∧∩`Д´)/
 (_フ彡 V`Д´)/   / ←>>416
            / ←>>343
■ このスレッドは過去ログ倉庫に格納されています