Perl/ActivePerl For UNIX/Linux/Windows
 
TryThe Homepage
���߂Ă�CGI
CGI ������
�_�C�i�~�b�NCGI
�_�E�����[�h
�T�[�r�X
�T�[�o�\�z(Windows)
�f�[�^�x�[�X�A�N�Z�X
�L���T�[�r�X
FAQ
���₢���킹
���̃y�[�W�����
Perl �� CGI
  CGI�X�N���v�g�̎d�g��
CGI�́AUNIX��œ��삷�錾��Ȃ牽���g���č쐬���Ă����܂��܂��񂪁A C����ł̓T�[�o��OS���ƂɃR���p�C��(�@�B�ꉻ)����K�v������A ��x�R���p�C�����Ă��܂��ƕύX���邱�Ƃ��ł��܂���B ���̃T�C�g���疳���Ń_�E�����[�h���Ă��������ł͉����ύX�ł��܂���B C�̃\�[�X�����J������@������܂����A����͂܂����ŁA������xC�̒m�����K�v�Ȃ����łȂ��A �R���p�C�����K�v�ɂȂ�܂��B �����̖������ׂăJ�o�[���Ă����̂�Perl(�ȉ�Perl�A�p�[���Ɠǂ�)����ł��B Perl�́A�e�L�X�g�x�[�X�œ��삷��R���p�C������ł��̂ŁA�쐬����̂̓e�L�X�g�t�@�C�������ł��B ���̃e�L�X�g�y�[�W�ɃA�N�Z�X�������Perl�������ŃR���p�C�����Ď��s����܂��B �������APerl�́AC����̒�����BASIC�̒��������킹����������Ȃ̂ł��B �����̗��R���猻��CGI�Ƃ��Đ��E���ōł��g�p����Ă���̂�Perl�ł��B �{�T�C�g�́A���ׂ�Perl�ō쐬����CGI��������Ă��܂��B

����ł́APerl���ꂪ�����ł����CGI�͍쐬�ł��邩�ƌ����΁A������NO�ł��B Perl�̓C���^�[�l�b�g�ōł��g�p����Ă���J������ł����A Perl���̂��̂̓C���^�[�l�b�g�ׂ̈ɊJ�����ꂽ����ł��Ȃ���΁ACGI�ׂ̈ɊJ�����ꂽ����ł�����܂���B �{���A���|�[�g���쐬����ׂ̌���Ƃ��ĊJ�����ꂽ�h�L�������g�L�q����ŁA Perl�����̒m���ł�CGI���J�����鎖���ł��܂���B �������Ȃ���A�K��Web�T�[�o�ɂ͊‹��ϐ��Ƃ���CGI�ɂƂ��ēs���̂����㕨�����݂��܂��B Perl�́A���̊‹��ϐ��ƌ����g�ݍ��킹�鎖��CGI���������܂��B
  ��Ȋ‹��ϐ�
  • �K��҂Ɋւ�����
    REMOTE_HOST �K��҂̃z�X�g�����Z�b�g����Ă��܂��B�����Z�b�g����Ă��Ȃ��ꍇ��A �h�o�A�h���X���Z�b�g����Ă���ꍇ�́A�h���C���ϊ����[�`�����g���ĕϊ��ł��܂��B
    REMOTE_ADDR �K��҂̂h�o�A�h���X���Z�b�g����Ă��܂��B
    REMOTE_USER ���[�U�[�F�؃T�[�o�ŁA�ی�f�B���N�g�����Ƀv���O����������ꍇ�A �F�؃��[�U�����Z�b�g����Ă��܂��B�قƂ�ǂ̃v���o�C�_�ł͉����Z�b�g����Ă��܂���B
    HTTP_USER_AGENT �K��҂̃u���E�U�����Z�b�g����Ă��܂��B
    HTTP_ACCEPT �K��҂̃u���E�U���T�|�[�g����l�h�l�d�^�C�v�̃��X�g���Z�b�g����܂��B
    HTTP_REFERER �K��҂��������痈�����A�Q�ƌ��̊��S�ȃA�h���X���Z�b�g����Ă��܂��B
    �i�u�b�N�}�[�N��A���ڃA�h���X�����͂��ꂽ�ꍇ�͉����Z�b�g����Ȃ��j
    ���݂ł̓v���C�o�V�[�ی�ׁ̈A�قƂ�ǎ擾�ł��Ȃ��B

  • �T�[�o�Ɋւ�����
    SERVER_NAME �T�[�o�̃h���C�������A�T�[�o�̂h�o�A�h���X���Z�b�g����Ă��܂��B
    SERVER_ADMIN �T�[�o�Ǘ��҂̃��[���A�h���X���Z�b�g����Ă��܂��B
    �i��ϖZ�������X�ł��B�ނ�݂Ƀ��[�����o���͍̂T���܂��傤�B�j
    SERVER_SOFTWARE �v�����T�[�o�̃\�t�g�E�F�A�̖��O�ƁA�o�[�W�������Z�b�g����܂��B
    GATEWAY_INTERFACE �T�[�o��Ŏ��s����Ă���b�f�h�̃o�[�W�������Z�b�g����܂��B
    DOCUMENT_ROOT �T�[�o�̃h�L�������g���[�g�f�B���N�g���̃p�X���Z�b�g����܂��B
    SERVER_PROTOCOL �T�[�o�ւ̃A�N�Z�X�Ɏg�p���ꂽ�v���g�R���̖��O�ƃo�[�W�������Z�b�g����܂��B
    SCRIPT_NAME ���ݎ��s����Ă���X�N���v�g�̑��΃p�X���Z�b�g����Ă��܂��B

  • �t�H�[���ƃN�b�L�[�Ɋւ�����
    REQUEST_METHOD <form>�^�O��method�A�g���r���[�g���Ԃ���܂��B'GET' / 'POST'
    CONTENT_LENGTH POST�N�G���[�ɂ�著���Ă������������o�C�g�P�ʂŊi�[����Ă��܂��B
    QUERY_STRING GET�N�G���[�ɂ�著���Ă����t�H�[������̃f�[�^���i�[����Ă��܂��B
    HTTP_COOKIE �K��҂̃u���E�U�ɃZ�b�g����A �T�[�o����A�N�Z�X�ł���COOKIE�̒l���Z�b�g����Ă��܂��B

    �‹��ϐ���$ENV{'�‹��ϐ���'}�ŊȒP�Ɏ擾�ł��܂��B ���Ƃ��΁A�K��҂��g�p���Ă���u���E�U��m��ɂ�$ENV{'HTTP_USER_AGENT'}�𒲂ׂ܂��B
  �����ݒ�
perl�X�N���v�g�̍ŏ��̍s�ɂ́A
#!usr/local/bin/perl
�̂悤��perl�����݂���p�X�������K�v������܂��B �P�s�ڂ��󔒍s�ł��A�擪�ɃX�y�[�X�������Ă��G���[�ɂȂ�܂��B ������UNIX�T�[�o�ł́A#!usr/local/bin/perl�ɒu����A�ߔN�悭�g�p�����悤�ɂȂ���Linux�ł́A #!usr/bin/perl�ɐݒ肳��Ă��܂��B
Windows�̃��[�J���T�[�o�ł͕K�v�Ȃ���������܂��̂ŁA ���[�J���Ŗ��Ȃ����삵�Ă���b�f�h���T�[�o�ɃA�b�v����ƃG���[�ɂȂ�ꍇ�̂قƂ�ǂ��A ����perl�̃p�X�Ɍ���������܂��B
(Windows�ł�Web�T�[�o��Apachi���g�p���Ă���ꍇ�͕K�v)
  ������
�O�q�̂Ƃ���perl�̐擪�s�ɂ�perl�̃p�X���L�q����K�v������܂��B
�Q�s�ڈȍ~�A���C�����[�`���܂ł̑O���ɂ͑}�����郉�C�u�����A �‹��ϐ����܂߂�����‹���ݒ肷��ϐ���������(�l�̑��)����R�[�h��u���̂���ʓI�ł��B
#���{��R�[�h�ϊ����W���[��
require 'jcode.pl';
����́A���������{��R�[�h�ɕϊ����郉�C�u������ǂݍ���ł��܂��B
  • ���t�̐ݒ�
    ���E���̃T�[�o�����R�ɑ���ł��鎖�A���ꂪ�C���^�[�l�b�g�̍ő�̓����ł��B ���{��̃y�[�W�ł��O���̃T�[�o�ɒu����Ă���T�C�g����ϑ����̂ł��B �����Ŗ��ɂȂ�̂������ł��Bperl�ɂ͊‹��ϐ��𑀍삵�Ď������C�����邱�Ƃ��ł��܂��B
    $ENV{'TZ'} = "JST-9";
    $DATE = time;
    ����́A�‹��ϐ�$ENV{'TZ'}���ەW�����ԂɂX���ԃv���X���ē��{���Ԃɂ��ăV���A���l���擾���Ă��܂��B �������Ȃ���T�[�o�̒��ɂ�$ENV{'TZ'}�‹��ϐ����@�\���Ȃ����̂�����܂��B ���̂悤�ȏꍇ��z�肵�Ă��ׂĂ̎����𐢊E�W������Z�o���Ă����Ζ��Ȃ����삳���邱�Ƃ��ł��܂��B
    $timelag = 9;
    $ENV{'TZ'} = "GMT";
    $DATE = time + $timelag * 3600;
  •   �N�b�L�[
    �ʏ��CGI�ł̓f�[�^���T�[�o�ɕۑ����܂����A�����̏��͂��ׂĂ̖K��҂ɋ��ʂɎg�p����A �K��҂��ƂɋL������邱�Ƃ͂���܂���B ���Ƃ��ĖK��҂��Ƃɕۑ����Ă���������������܂��B ���Ƃ��΁A�C���^�[�l�b�g�𗘗p�����ʐM�̔��ł͖K��҂��Ƃɍw�����悤�Ƃ��鏤�i���قȂ�܂��B �������f�[�^�t�@�C���ɕۑ����邱�Ƃ͂ł��܂���B���̂悤�Ȍl�����ꎞ�I�ɋL��������@�\���N�b�L�[�ł��B

    �N�b�L�[�͖K��҂̏����T�[�o���K��҂̃u���E�U�ɏ������ގ��Ŏ������Ă��܂��B
    • �N�b�L�[�̏���
      �N�b�L�[�Ƀf�[�^��ۑ�����ɂ́uSet-Cookie�v�w�b�_�[���g�p���܂��B
      Print "Set-Cookie:�N�b�L�[�̖��� = �ۑ�����f�[�^ ; expires = �ۑ����� \n";
      • �N�b�L�[�̖���
        ���͉̂p�����Ŏ��R�ɕt���邱�Ƃ��ł��܂��B����CGI�X�N���v�g�Əd�����Ȃ����Ƃ����ɂ͋C���‚���K�v������܂��B
      • �ۑ�����f�[�^
        �ۑ�����f�[�^���v���O���}�����R�ɍ쐬�ł��܂��B�M�҂̏ꍇ�͕������₷���悤��
        Key!�l, Key!�l, Key!�l, Key!�l, Key!�l
        �Ƃ��������ŋL�^���Ă��܂��B
        ���ꂼ��̍��ڂ�","�ŋ�؂�A�L�[�ƒl�͒ʏ킠�܂�g�p���Ȃ�"!"�ŋ�؂��Ă��܂��B
        �y��z
        name!Terra,email!terra@xx.xxxx.or.jp,hp!http://www.xxxx.or.jp/terra/
      • �ۑ�����
        �N�b�L�[�ɂ͕ۑ����Ă���������ݒ肷��K�v������A�����ɂ������ȋK��������܂��B
        "�j��, ��-��-���� ��:��:�b GMT";
        �j���́A'Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'����I��
        ���́A�O���ȗ�������'01','02','03'�̂悤�Ɍ����܂��B
        ���́A�P������'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec' �ɒu��������K�v������܂��B �����b���O���ȗ����邱�Ƃ͂ł��܂���B���̃T���v���ł͂R�O���Ԃ̊������w�肵�A������ݒ肵�Ă��܂��B
        local(@date) = localtime(time + 30 * 86400);
        $date[5] += 1900;
        $date[3] = sprintf("%02d",$date[3]);
        $date[2] = sprintf("%02d",$date[2]);
        $date[1] = sprintf("%02d",$date[1]);
        $date[0] = sprintf("%02d",$date[0]);
        local($wday) = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday') [$date[6]];
        local($month) = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec') [$date[4]];
        local($date_gmt) = "$wday, $date[3]\-$month\-$date[5] $date[2]:$date[1]:$date[0] GMT";
        local($cookievalue) = join(",","name!$QUERY{'name'}","email!$QUERY{'email'}","pw!$QUERY{'pw'}");
        print "Set-Cookie: $CookieName=$cookievalue; expires=$date_gmt\n";

    • �ėp�I�ȏ������݁A�ǂݍ��݃��[�`��
      �ėp�I�ɗ��p�ł���T�u���[�`���ɂ��Ă����΁A����‚��邾���ŁA�b�f�h���쐬���邽�тɏ���������K�v���Ȃ��Ȃ�܂��B
      #�N�b�L�[��������
      sub cookie_regist {
        my($cookiename, $cookielist, $date) = @_;
        !$date && ($date = 30);
        my(@COOKIELIST) = split(/\,/, $cookielist);
        my(%COOK);
        my(@DATE) = localtime(time + $date * 86400);
        $DATE[5] += 1900;
        $DATE[3] = sprintf("%02d",$DATE[3]);
        $DATE[2] = sprintf("%02d",$DATE[2]);
        $DATE[1] = sprintf("%02d",$DATE[1]);
        $DATE[0] = sprintf("%02d",$DATE[0]);
        my($wday) = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday') [$DATE[6]];
        my($month) = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec') [$DATE[4]];
        my($date_gmt) = "$wday, $DATE[3]\-$month\-$DATE[5] $DATE[2]:$DATE[1]:$DATE[0] GMT";
        my($cookievalue, $key, $value);
        foreach (@COOKIELIST) {
          ($key, $value) = split(/=/, $_);
          $key =~ s/\,/&comma/g;
          $key =~ s/:/&colon/g;
          $key =~ s/;/&semicolon/g;
          $value =~ s/\,/&comma/g;
          $value =~ s/:/&colon/g;
          $value =~ s/;/&semicolon/g;
          if ($cookievalue) {
            $cookievalue .= ",$key:$value";
          } else {
            $cookievalue = "$key:$value";
          }
          $COOK{$key} = $value;
        }
        print "Set-Cookie: $cookiename=$cookievalue; expires=$date_gmt\n";
        %COOK;
      }
      #�N�b�L�[�ǂݍ���
      sub cookie_read {
        my($cookiename) = @_;
        my($key, $value, %COOK);
        my($cookies) = $ENV{'HTTP_COOKIE'};
        my(@pairs) = split(/;/,$cookies);
        my(@DUMMY);
        foreach $pair (@pairs) {
          ($key, $value) = split(/=/, $pair);
          $key =~ s/ //g;
          $DUMMY{$key} = $value;
        }
        @pairs = split(/\,/,$DUMMY{$cookiename});
        foreach $pair (@pairs) {
          ($key, $value) = split(/:/, $pair);
          $key =~ s/&comma/\,/g;
          $key =~ s/&colon/\:/g;
          $key =~ s/&semicolon/\;/g;
          $value =~ s/&comma/\,/g;
          $value =~ s/&colon/\:/g;
          $value =~ s/&semicolon/\;/g;
          $COOK{$key} = $value;
        }
        %COOK;
      }

    • �K��񐔂̋L�^
      �����̃z�[���y�[�W�ւ̃A�N�Z�X����m���\�I�Ȃ��̂ɃA�N�Z�X�J�E���^�[������܂��B ���̃A�N�Z�X�J�E���^�[�́A���ׂĂ̖K��҂̗݌v�𐔂��Ă��܂��̂ŁA �ǂȂ�������K�ꂽ�̂��͔c���ł��܂���B�N�b�L�[�𗘗p���āA ���ꂼ��̖K��҂̃u���E�U�ɃJ�E���g���L�^���Ă����΁A�K��҂��ƂɃJ�E���g���鎖���”\�ɂȂ�܂��B
      $timelag = 9;
      $ENV{'TZ'} = "GMT";
      #$timelag�ɐݒ肵�����E�W��������̎������v���X���Ė{���̓��t���擾
      (@DATE) = localtime(time + $timelag * 3600);
      $date = sprintf("%04d/%02d/%02d", $DATE[5] + 1900, $DATE[4]++, $DATE[3]);
      #�N�b�L�[�̖��O���w�肵�ăN�b�L�[��ǂݍ���;
      &cookie_read('cookie_count');
      #���t�𒲂ׂē������Ȃ�1�v���X����
      #���߂Ă̖K���A���t���ς���Ă���Ζ{�������P�ɂ���
      if ($COOKIE{'date'} eq $date) { $COOKIE{'today'}++; } else { $COOKIE{'today'} = 1; }
      $COOKIE{'total'}++;
      #�N�b�L�[�ɏ������ރf�[�^�̃t�H�[�}�b�g�𐮂���
      $value = "date!$date,today!$COOKIE{'today'},total!$COOKIE{'total'}";
      #�N�b�L�[�̖��́A�������ރf�[�^�A�������w�肵�ď������݃��[�`�����Ăяo��
      &cookie_regist('cookie_count', $value, 30);
      print "Content-type: text/html\n\n";
      print "<html><body>\n";
      print "&ltp>�{��$COOKIE{'today'}��A���v$COOKIE{'total'}��ڂ̂��K�₠�肪�Ƃ��������܂��B</p>\n";
      print "</body></html>\n";
      exit;

    • �t�H�[���̓��͎x��
      �f���‚�`���b�g�ȂǁA�悭���p����y�[�W�ŁA���O�⃁�[���A�h���X�𖈉�L������͖̂��Ȃ��̂ł��B �N�b�L�[���g�p����΂Q��ڈȍ~�́A�\�ߓ��͂���Ă��ĖK��҂͏ȗ����邱�Ƃ��ł��܂��B �N�b�L�[�ɏ������ރR�[�h�́A�f�[�^���t�@�C���ɏ������񂾒���ɒu���܂��B
      #�N�b�L�[�ɏ������ރf�[�^�̃t�H�[�}�b�g�𐮂���
      #�L��������̂́A�����O�AE-Mail�A�z�[���y�[�W�A�p�X���[�h
      $value = "name!$QUERY{'name'},email!$QUERY{'email'},hp!$QUERY{'hp'},pw!$QUERY{'pw'}";
      #�N�b�L�[�̖��O���ubbs�v�A�ۑ����Ԃ��R�O���ɂ��A�N�b�L�[�������݃��[�`�����Ăяo��
      &cookie_regist('bbs', $value, 30);

      �������܂ꂽ�N�b�L�[�̏����t�H�[�����쐬����Ƃ��ɓW�J���܂��B
      #�N�b�L�[�̖��̂Ɂubbs�v���w�肵�ăN�b�L�[��ǂݍ���
      &cookie_read('bbs');
      print "<form name=inputform action=note.cgi method=POST>\n";
      print "<input type=hidden name=action value=regist>\n";
      #�A�z�z��%COOKIE�̒l���v�����v�g�Ƃ��đ��
      print "�����O:<input type=text name=name value=$COOKIE{'name'}><br>\n";
      print "E-mail:<input type=text name=email value=$COOKIE{'email'}><br>\n";
      print "�薼:<input type=text name=subject><br>\n";
      print "Hp:<input type=text name=hp value=$COOKIE{'hp'}><br>\n";
      print "Password:<input type=password name=pw value=$COOKIE{'pw'}><br>\n";
      print "<textarea name=comment rows=4 cols=80></textarea><br>\n";
      print "<input type=submit value=�V�K���e�^�X�V>\n";
      print "</form>\n";
      �֐��ƃT�u���[�`��
    perl�ł͊֐��ƃT�u���[�`������ʂ��܂���B��{�I�ɂ��ׂĂ��֐��ł��B ��ʓI�ɂ͏����������L�q���A�߂�l���A���Ȃ����̂��T�u���[�`���A������̌��ʂ��A�����̂��֐��ƌĂт܂����A perl�ł͂��ׂẴT�u���[�`���ōŌ�ɏ������ꂽ�ϐ����A���܂��B ���̋A���ꂽ�l���g�p��������Ȃ����v���O���}����ł��B �g�p����Ί֐��Ŏg�p���Ȃ���΃T�u���[�`���Ƃ������ƂɂȂ�܂��B
    • �֐��̋L�q
      �֐��̐錾�ɂ�sub�L�[���[�h�Ŏn�܂�u���b�N�ŋL�q���܂��B
      Sub function {
        local($a) = 2;
        local($b) = 3;
        local($c) = $a * $b;
        $c;
      }
      function�͉p�����Ńv���O���}�����R�ɕt���邱�Ƃ��ł��܂��B �֐����ł�local�L�[���[�h���g�p���Ċ֐��������̃X�R�[�v(�L���͈�)�����ƒ��[�J���ϐ����g�p�ł��܂��B ���[�J���ϐ��́A�֐��̃u���b�N�������ŗL���ł����� ���C�����[�`���œ����̕ϐ������g�p����Ă��Ă��l�ɉe����^����S�z������܂���B ���������Ĕėp�I�Ȋ֐����L�q���鎖���”\�ɂȂ�̂ł��B

    • �֐��̌ďo��
      �֐���A�T�u���[�`�����Ăяo���ꍇ�́A�֐����̑O�Ɂu&�v��t���܂��B �T�u���[�`���̏ꍇ�͖߂�l��K�v�Ƃ��܂���B���̂悤�ȋL�q�����Ő�����T�u���[�`���Ɉڂ����Ƃ��ł��܂�

      &function;

      �֐��͖߂�l���󂯎��܂��̂Ŏ��̂悤�ɂ��܂��B

      $value = &function;

      ���̏ꍇ�A�߂�l��$value�Ɋi�[����܂��B
      �v�Z���Ɋ܂߂�
      $value = &function * 2;
      print "<p>���v = ", &function , "</p>\n";
      for ($index = &start_roop; $index <= &end_roop; $index++) {
        �E�E�E�E�E�E�E
      }
      �Ə������Ƃ��ł��܂��B
      �֐��́A�֐����ő��̊֐����Ăяo�������A�������g���Ăяo�����Ƃ��ł��܂��B

    • ������n��
      �֐��A�T�u���[�`���Ɉ�����n���A���̈����𗘗p���Čv�Z�����邱�Ƃ��ł��܂��B �T�u���[�`���Ɉ�����n���A������ڂ��ɂ́A
      &function(3);
      �֐��Ɉ�����n���A�v�Z���ʂ��󂯎��ɂ́A
      $value = &function(3);
      �Ƃ��܂��B
      �������A�X�J���ϐ������łȂ��z��ϐ���n�����Ƃ��ł��܂��B
      $value = &fuction(@DATA);

    • ��������������֐�
      �֐���A�T�u���[�`���͈������󂯎��v�Z�A�������邱�Ƃ��ł��܂��B �Ăяo�����Ɏw�肳�ꂽ�����́A����ϐ�@_�Ɋi�[����Ă��܂��B
      sub function {
        local($pi) = $_[0];
        $pi * 3.14159;
      }
      ���̗�ł͈����ɉ~�������|���ċA���Ă��܂��B
      �����̃X�J���l����������ɂ́A
      sub function {
        local($a, $b) = @_;
        $a * $b;
      }
      ���̗�́A�Q�‚̈������󂯎��A���̐ς��A���Ă��܂��B

      �z����󂯎��ɂ́A���̂悤�ɏ����܂��B
      sub function {
        local(@PRM) = @_;
        local($max) = 0;
        foreach (@PRM) {
          ($_ > $max) && $max = $_;
        }
        $max;
      }
      ����́A�󂯎�����z��ϐ��̐��l���P�‚��’��ׁA�ő�l���A���Ă��܂��B

      ���̃T���v���ł́A�f�B���N�g���Ȃ��̃T�u�f�B���N�g����A�t�@�C�����A�t�@�C���̃T�C�Y��\�����Ă��܂��B �f�B���N�g���̏ꍇ�́A�������g���Ăяo�����̓������\�����܂��B
      sub search {
        local($dir) = $_[0];
        #�f�B���N�g�����w�肳��Ă��Ȃ���Ό��݂̃f�B���N�g������J�n
        if (!$dir) { $dir = './'; }
        #�f�B���N�g�����ړ�
        chdir $dir;
        #�T�u�f�B���N�g�����܂߃f�B���N�g���Ȃ��̃t�@�C�����擾
        local(@FILENAMES) = <*>;
        foreach $file (@FILENAMES) {
          #�t�@�C�����ǂݍ��݉”\�ȃf�B���N�g���Ȃ�
          if (-d $file && -r _) {
            #�f�B���N�g������\��
            print " <b>[$file]</b>\n";
            print "<ul>";
            #���̃f�B���N�g���̓����𒲂ׂ邽�ߎ������g���Ăяo��
            &search($file);
            #���̃f�B���N�g���ɖ߂�
            chdir("../");
            print "</ul>";
          } else {
            #�t�@�C�������ʂ̃t�@�C���Ȃ�
            if (-f $file) {
              #�t�@�C���̃T�C�Y�𒲂ׂ�
              $size = int((-s $file) / 1024 + 0.9);
              print "$file - $size K<br>\n";
            }
          }
        }
      }
    Copyright 2004 Terra. All rights reserved. No reproduction or republication without written