• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PerlからPHPへ移行 Part2)

PerlからPHPへの移行方法

このQ&Aのポイント
  • PerlのソースコードをコメントどおりにPHPに直すと、シリアルは1159752330、文字列は2006年10月2日 10時25分30秒、2006/10/2 10:25:30となります。
  • 移行方法は、Time::Localはppm install Time-Localでインストールできます。BEGINはPHPで使われず、バッファリングしないことを示すために$|=1を使用します。また、UseはPHPでは使われず、モジュールを使用する際はrequireを使用します。
  • テスト用のサブルーチンtest_date_timeでは、可変引数を使用して年、月、日、時、分、秒を一度に受け取ります。timelocal関数を使用してシリアルを取得し、sprintf関数を使用して文字列を生成します。

質問者が選んだベストアンサー

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

<?php //use strict; # しいて書けばerror_reporting(E_ALL);でしょうか //BEGIN{ # BEGINに相当する関数はありません //$|=1; # PHPでは必要時にバッファをフラッシュするしかないです //} //use Time::Local; #PHPではモジュールを読み込むにはincludeやrequireを使います //Time::Localに限らずPHPでは多くの機能が標準関数にあります function test_date_time($year=0, $mon=0, $mday=0, $hours=0, $min=0, $sec=0){ $serial = mktime($hours, $min, $sec, $mon, $mday, $year); #引数の順番が違います $moji = "${year}年${mon}月${mday}日 ${hours}時${min}分${sec}秒"; //PHPでは変数名に日本語が使えるので変数名を{}で明示しています return array($serial, $moji); # 複数の戻り値は配列にして返す } list($serial, $moji) = test_date_time(2006, 10, 2, 10, 25, 30); # 配列をlist()で受け取る print 'シリアルは' . $serial . "\n"; #引用符にqやqqは使えません print "文字列は$moji\n"; $ptn = '^(.+?)年(.+?)月(.+?)日\s(.+?)時(.+?)分(.+?)秒$'; if(preg_match("/$ptn/i", $moji, $match)){ print "$match[1]/$match[2]/$match[3] $match[4]:$match[5]:$match[6]\n"; } exit(0); ?>

関連するQ&A