[PHP-users 6369] PerlからPHPの移植で@_が分かりません。

clam php-users@php.gr.jp
Wed, 20 Mar 2002 22:31:42 +0900


お世話になりますclamです
PerlをPHPに移植し両方の言語を理解しようと思い
futomi's cgi caffeのサブルーチン集から
http://www.futomi.com/subroutine/gethostbyaddr.html
IPアドレスからホスト名を取得するサブルーチンで、
試してみたら移植は30分で終りましたが
Perlの関数を理解するのに2日間たっても
今だに理解できないので、是非教えてください。
-------------------------------------------------------------------------------
GetHostByAddr for Perl
-------------------------------------------------------------------------------
#!/usr/bin/perl
print "Content-type: text/plain\n\n";

# ローカルホストの環境なのでREMOTE_ADDRが取得
# できないため仮のアドレス(yahoo)を設定
$addr = '210.152.236.50';
$hostname = &GetHostByAddr($ENV{'REMOTE_ADDR'});
$host = &GetHostByAddr($addr);
print "$host\n\n";

exit;

sub GetHostByAddr {
my($ip_address) = @_;
my(@addr) = split(/\./, $ip_address);
my($packed_addr) = pack("C4", $addr[0], $addr[1], $addr[2], $addr[3]);
my($name, $aliases, $addrtype, $length, @addrs);
($name, $aliases, $addrtype, $length, @addrs) =
gethostbyaddr($packed_addr, 2);
return $name;
}
-------------------------------------------------------------------------------
GetHostByAddr for PHP
-------------------------------------------------------------------------------
<?php
/* ローカルホストの環境なのでREMOTE_ADDRが */
/* 取得できないため仮のアドレス(yahoo)を設定 */
$addr = '210.152.236.50';
$hostname = GetHostByAddr($REMOTE_ADDR);
$host = &GetHostByAddr($addr);
print ("$host\n");
?>
-------------------------------------------------------------------------------
my($ip_address) = @_;の部分で、@_とありますが、
「@_はサブルーチンに与えられた引数は内部では配列@_となります」
と参考書に出ていました。
プログラムの前後からなんとなく、210.152.236.50を
配列に格納する前準備のような気がしたので
my($ip_address) = @_;を挟んで、前後に
print文を付けて確認したら

print "$ip_address"; #1
my($ip_address) = @_;
print "$ip_address"; #2

#1の確認結果は$ip_addressの内容が、210.152.236.50でした
#2の確認結果は$ip_addressの内容が、210 152 236 50でした

PHPは内部で自動的に@_を解釈しているのでしょうが、しいて
@_をPHP的に表現するとすればどんなどのようになるのでしょうか?
PHPにこのような命令はあるのでしょうか?
とても関心があります、是非ご教授してください、
宜しくお願いします。

なお初心者レベルですので
「@_はサブルーチンに与えられた引数は内部では配列@_となります」
という御回答では到底今の、私のレベルでは理解できませんので
分かりやすく、宜しくお願いします。