[Perl¥È¥Ã¥×¥Ú¡¼¥¸]

·«¤êÊÖ¤· - while¡¢for -

whileʸ

whileʸ¤Ï¡¢C¸À¸ì¤ÈƱÍͤˡ¢¾ò·ï¼°¤¬Ëþ¤¿¤µ¤ì¤ë´Ö¤Ï¼Â¹Ôʸ¤ò·«¤êÊÖ¤·¤Þ¤¹¡£²¼µ­¤Î½ñ¤­Êý¤Ë½¾¤¤¤Þ¤¹¡£

¡ÊÀµ¤·¤¤½ñ¤­Êý¡Ë

while (¾ò·ï¼°) {
    ¼Â¹Ôʸ;
}

¼Â¹Ôʸ¤ÏÊ£¿ô¹Ô¤Ë¤Ê¤Ã¤Æ¤â¹½¤ï¤Ê¤¤¤Î¤Ç¤¹¤¬¡¢ Ãí°Õ¤·¤Æ¤Û¤·¤¤¤Î¤Ï¼Â¹Ôʸ¤¬1¹Ô¤Ç¤â

¡Ê¸í¤Ã¤¿½ñ¤­Êý¡Ë

while (¾ò·ï¼°) 
    ¼Â¹Ôʸ;

¤È¤·¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£{ }¤ÇÊĤ¸¤Ê¤±¤ì¤Ð¤¤¤±¤Þ¤»¤ó¡£ ¤³¤ì¤Ï¡¢Â¾¤Îifʸ¡¢forʸ¤Ê¤É¤Ç¤âƱÍͤǤ¹¡£

񂫪5-1

²¼µ­¤Î¥¹¥¯¥ê¥×¥È¤òkadai5-1.pl¤È¤·¤Æ½ñ¤­¡¢¼Â¹Ô·ë²Ì¤ò³Îǧ¤»¤è¡£

#!/usr/bin/perl

print "*** ¥±¡¼¥¹1 ***\n";
$count = 1;
while ($count < 3) {
    print "\$count = $count\n";
    ++$count;
}
    
print "*** ¥±¡¼¥¹2 ***\n";
$count = 1;
while ($count < 3) {
    print "\$count = $count\n";
    $count++;
}
¡Ê¼Â¹Ô·ë²Ì¡Ë

*** ¥±¡¼¥¹1 ***
$count = 1
$count = 2
*** ¥±¡¼¥¹2 ***
$count = 1
$count = 2

¾ò·ï¼°¤Ï¡¢¼°¤Çɽ¸½¤µ¤ì¤Æ¤¤¤ë¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£²¼µ­¤Î±é½¬5-2¤Ç¤Ï¡¢ ñ¤ËÊÑ¿ô$count¤¬( )¤ÎÃæ¤Ë½ñ¤¤¤Æ¤¢¤ë¤À¤±¤Ç¤¹¡£ ¤³¤Î¾ì¹ç¤Ë¤Ï¡¢¡Ö( )¤ÎÃ椬Àµ¡×¤È¤¤¤¦¤Î¤¬ ¾ò·ï¼°¤È¤Ê¤ê¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢ ¡Ö( )¤ÎÃ椬Àµ¤Ç¤¢¤ë´Ö¤Ï¡¢ ¼Â¹Ô¼°¤ò·«¤êÊÖ¤¹¡×¤È¤¤¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£

񂫪5-2

²¼µ­¤Î¥¹¥¯¥ê¥×¥È¤òkadai5-2.pl¤È¤·¤Æ½ñ¤­¡¢ 4¤Ä¤Î¥±¡¼¥¹¤Ë¤ª¤±¤ë¼Â¹Ô·ë²Ì¤Î°ã¤¤¤ò³Îǧ¤»¤è¡£

#!/usr/bin/perl

print "*** ¥±¡¼¥¹1 ***\n";
$count = 1;
while ($count) {
    print "\$count = $count\n";
    --$count;
}

print "*** ¥±¡¼¥¹2 ***\n";
$count = 1;
while ($count) {
    print "\$count = $count\n";
    $count--;
}

print "*** ¥±¡¼¥¹3 ***\n";
$count = 1;
while (--$count) {
    print "\$count = $count\n";
}

print "*** ¥±¡¼¥¹4 ***\n";
$count = 1;
while ($count--) {
    print "\$count = $count\n";
}
¡Ê¼Â¹Ô·ë²Ì¡Ë

*** ¥±¡¼¥¹1 ***
$count = 1
*** ¥±¡¼¥¹2 ***
$count = 1
*** ¥±¡¼¥¹3 ***
*** ¥±¡¼¥¹4 ***
$count = 0

whileʸ¤Ï¡¢¥Õ¥¡¥¤¥ë¤ò³«¤­¡¢¤½¤ÎÆâÍƤòÆɤ߹þ¤àºÝ¤Ë¤è¤¯»ÈÍѤµ¤ì¤Þ¤¹¡£ ¾ÜºÙ¤Ï¡¢¥Õ¥¡¥¤¥ëÆþ½ÐÎϤΥڡ¼¥¸¤Ë µ­½Ò¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢¤³¤³¤Ç¤Ï´Êñ¤Ë¾Ò²ð¤·¤Þ¤¹¡£¤Þ¤º¡¢ 1995ǯ¤«¤é2001ǯ¤Þ¤Ç¤Î¥Ç¡¼¥¿¤¬Æþ¤Ã¤Æ¤¤¤ë¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë kadai5-3.txt¤òºîÀ®¤·¤Æ¤¯¤À¤µ¤¤¡£

kadai5-3.txt

1995 100
1996 110
1997 120
1998 130
1999 140
2000 150
2001 160

¤³¤³¤Ç¡¢¤³¤Îkadai5-3.txt¤«¤é¥Ç¡¼¥¿¤òÆɤ߹þ¤ßɽ¼¨¤µ¤»¤¿¤¤¤È¤·¤Þ¤¹¡£ ¤³¤ì¤òPerl¤Çµ­½Ò¤¹¤ë¤È¤¹¤ë¤È¡¢ ¡Ö¥Ç¡¼¥¿¤ò1¹Ôñ°Ì¤ÇÆɤ߹þ¤ß¡¢¥Ç¡¼¥¿¤Î¤¢¤ë¹Ô¤¬Â¸ºß¤¹¤ë´Ö¤Ï whileʸ¤Ç·«¤êÊÖ¤¹¡×¤È¤¤¤¦ÏÈÁȤߤˤʤê¤Þ¤¹¡£ ²¼µ­¤ÎÎã¤ò¸«¤Æ¤¯¤À¤µ¤¤¡£

#!/usr/bin/perl

open (FILE, 'kadai5-3.txt') or die "$!";
while (<FILE>) {
    print $_;
}
close (FILE);
¡Ê¼Â¹Ô·ë²Ì¡Ë

1995 100
1996 110
1997 120
1998 130
1999 140
2000 150
2001 160

¾åµ­¤Î¥¹¥¯¥ê¥×¥È¤Ç¤Ï¡¢<FILE>¤¬ 1¹ÔÆɤ߹þ¤à ¤È¤¤¤¦Ì¿Îá¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£Æɤ߹þ¤ó¤À·ë²Ì¡¢¥Õ¥¡¥¤¥ë¤Î½ª¤ï¤ê ¤Ç¤Ï¤Ê¤«¤Ã¤¿¤éwhileʸ¤ÎÃæ¤ò¼Â¹Ô¤·¤Þ¤¹¡£ Æɤ߹þ¤Þ¤ì¤¿1¹Ôʬ¤Î¥Ç¡¼¥¿¤Ï¡¢Ê¸»úÎó¤È¤·¤Æ $_ ¤È¤¤¤¦ ¥Ç¥Õ¥©¥ë¥ÈÊÑ¿ô¤ËÆþ¤ì¤é¤ì¤Þ¤¹¡£ ¤½¤ì¤òprintʸ¤Çɽ¼¨¤µ¤»¤Æ¤¤¤ë¤ï¤±¤Ç¤¹¡£

񂫪5-3

¾åµ­¤ÎÎã1¤Î¥¹¥¯¥ê¥×¥È¤òkadai5-3.pl¤È¤·¤Æ½ñ¤­¡¢¼Â¹Ô·ë²Ì¤ò³Îǧ¤»¤è¡£


¥Õ¥¡¥¤¥ë¤«¤é¥Ç¡¼¥¿¤òÆɤ߹þ¤ó¤Ç½èÍý¤¹¤ëºÝ¤Ë¡¢ ¡Ö¤³¤Î¾ì¹ç¤Ë¤Ê¤Ã¤¿¤é½èÍý¤ò½ª¤ï¤é¤»¤¿¤¤¡×¤È¤«¡Ö¤³¤Î¾ì¹ç¤Ï ½èÍý¤ò¤·¤Ê¤¤¤Ç¤È¤Ð¤·¤¿¤¤¡×¤Ê¤É¤ÎÍ׵᤬¤¢¤ë¤È»×¤¤¤Þ¤¹¡£ ¡Ö¤³¤Î¾ì¹ç¤Ë¤Ï¡×¤È¤¤¤¦É½¸½¤Ï¡¢ ¾ò·ïȽÃÇ - ifÊ[ -¤Ç³Ø½¬¤·¤¿ifʸ¤ò»È¤¤¤Þ¤¹¤¬¡¢ ½èÍý¤Î¥ë¡¼¥×¤òÈ´¤±½Ð¤·¤¿¤ê¡¢¥¹¥­¥Ã¥×¤·¤¿¤ê¤¹¤ë¤Î¤Ë last¤änext¤ò»È¤¤¤Þ¤¹¡£ ¤Þ¤º¡¢last¤ò»È¤Ã¤¿Îã¤ò¸«¤Æ¤ß¤Þ¤·¤ç¤¦¡£

Î㡧last¤òÍѤ¤¤¿·«¤êÊÖ¤·

#!/usr/bin/perl

open (FILE, 'kadai5-3.txt') or die "$!";
while (<FILE>) {
    chomp $_;
    @data = split(/ /, $_);
    last if ($data[0] == 2000);
    print $_, "\n";
}

¡Ê¤Þ¤¿¤Ï¡Ë

#!/usr/bin/perl

open (FILE, 'kadai5-3.txt') or die "$!";
while (<FILE>) {
    chomp $_;
    @data = split(/ /, $_);
    if ($data[0] == 2000){
        last;
    }
    print $_, "\n";
}

¾åµ­¤Î¥¹¥¯¥ê¥×¥È¤Ç¤Î½èÍý¤Îή¤ì¤Ï²¼µ­¤Î¤È¤ª¤ê¤Ç¤¹¡£

  1. Æɤ߹þ¤ó¤Ç¤­¤¿1¹Ôñ°Ì¤Îʸ»úÎó¤ËÂФ·¡¢chomp¤Ç ²þ¹Ô(\n)¤ò¼è¤ê½ü¤­¤Þ¤¹¡£
  2. split¤òÍѤ¤¤Æ¡¢¶õÇòñ°Ì¤Çʬ³ä¤·¡¢¤³¤Þ¤®¤ì¤Ë¤Ê¤Ã¤¿Ê¸»úÎó¤ò @data¤È¤¤¤¦ÇÛÎó¤ËÆþ¤ì¤Þ¤¹¡£
  3. ifʸ¤ÇÇÛÎó@data¤Î1ÈÖÌܤÎÍ×ÁÇ$data[0]¤òÂоݤˤ·¤Æ¡¢ ¡Ö2000¤ËÅù¤·¤±¤ì¤Ðifʸ¤ÎÃæ¤ò¼Â¹Ô¤»¤è¡×¤ÈÌ¿Îᤷ¤Þ¤¹¡£ ¤â¤·$data[0]¤¬2000¤ËÅù¤·¤±¤ì¤Ð¡¢¤Ä¤Þ¤êifʸ¤Î¾ò·ï¼°¤¬¿¿¤Ê¤é¡¢ last¤¬¼Â¹Ô¤µ¤ì¡¢¥ë¡¼¥×¤òÈ´¤±½Ð¤·¤Þ¤¹¡£
  4. ifʸ¤¬¿¿¤Ç¤¢¤ì¤Ð¡¢¥ë¡¼¥×¤òÈ´¤±½Ð¤·¤Æ¤¤¤ë¤Î¤Çprintʸ¤Ï¼Â¹Ô¤µ¤ì¤Þ¤»¤ó¡£ ifʸ¤¬¿¿¤Ç¤Ê¤±¤ì¤Ð¡¢last¤Ï¼Â¹Ô¤µ¤ì¤º¥ë¡¼¥×¤òÈ´¤±½Ð¤µ¤Ê¤¤¤Î¤Ç¡¢ printʸ¤¬¼Â¹Ô¤µ¤ì¤Þ¤¹¡£
  5. last¤¬¼Â¹Ô¤µ¤ì¤ë¤È¥ë¡¼¥×¤â½ªÎ»¤µ¤ì¤ë¤Î¤Ç¡¢printʸ¤â¼Â¹Ô¤µ¤ì¤Þ¤»¤ó¡£

¼¡¤Ë¡¢next¤ò»È¤Ã¤¿Îã¤Ç¤¹¡£

Î㡧next¤òÍѤ¤¤¿·«¤êÊÖ¤·

#!/usr/bin/perl

open (FILE, 'kadai5-3.txt') or die "$!";
while (<FILE>) {
    chomp $_;
    @data = split(/ /, $_);
    next if ($data[0] == 2000);
    print $_, "\n";
}

¡Ê¤Þ¤¿¤Ï¡Ë

#!/usr/bin/perl

open (FILE, 'kadai5-3.txt') or die "$!";
while (<FILE>) {
    chomp $_;
    @data = split(/ /, $_);
    if ($data[0] == 2000){
        next;
    }
    print $_, "\n";
}

¾åµ­¤ÎÎã3¤Ï´ðËÜŪ¤Ë¤Û¤ÜÎã2¤ÈƱ¤¸¤Ç¤¹¤¬¡¢°ã¤¦¤Î¤Ï ²¼µ­¤ÎÅÀ¤Ç¤¹¡£

  1. ifʸ¤ÇÇÛÎó@data¤Î1ÈÖÌܤÎÍ×ÁÇ$data[0]¤òÂоݤˤ·¤Æ¡¢ ¡Ö2000¤ËÅù¤·¤±¤ì¤Ðifʸ¤ÎÃæ¤ò¼Â¹Ô¤»¤è¡×¤ÈÌ¿Îᤷ¤Þ¤¹¡£ ¤â¤·$data[0]¤¬2000¤ËÅù¤·¤±¤ì¤Ð¡¢¤Ä¤Þ¤êifʸ¤Î¾ò·ï¼°¤¬¿¿¤Ê¤é¡¢ next¤¬¼Â¹Ô¤µ¤ì¡¢·«¤êÊÖ¤·¤ò¼¡¤Ë¿Ê¤á¤Þ¤¹¡£
  2. ifʸ¤¬¿¿¤Ç¤¢¤ì¤Ð¡¢¼¡¤Î¥¹¥Æ¥Ã¥×<FILE>¤Ë¿Ê¤ó¤Ç¤¤¤ë¤Î¤Ç printʸ¤Ï¼Â¹Ô¤µ¤ì¤Þ¤»¤ó¡£ifʸ¤¬¿¿¤Ç¤Ê¤±¤ì¤Ð¡¢next¤Ï¼Â¹Ô¤µ¤ì¤Ê¤¤¤Î¤Ç¡¢ printʸ¤¬¼Â¹Ô¤µ¤ì¤Þ¤¹¡£
  3. next¤¬¼Â¹Ô¤µ¤ì¤Æ¤â¥ë¡¼¥×¤Ï½ªÎ»¤µ¤ì¤Ê¤¤¤Î¤Ç¡¢ifʸ¤¬¿¿¤Ë¤Ê¤é¤Ê¤¤¸Â¤ê printʸ¤Ï¼Â¹Ô¤µ¤ì¤Þ¤¹¡£

񂫪5-4

¾åµ­¤ÎÎã2¤Î¥¹¥¯¥ê¥×¥È¤òkadai5-4.pl¤È¤·¤Æ½ñ¤­¡¢¼Â¹Ô·ë²Ì¤ò³Îǧ¤»¤è¡£

񂫪5-5

¾åµ­¤ÎÎã3¤Î¥¹¥¯¥ê¥×¥È¤òkadai5-5.pl¤È¤·¤Æ½ñ¤­¡¢¼Â¹Ô·ë²Ì¤ò³Îǧ¤»¤è¡£

forʸ

forʸ¤â¡¢C¸À¸ì¤ÈƱÍͤˡ¢¾ò·ï¼°¤¬Ëþ¤¿¤µ¤ì¤ë´Ö¤Ï¼Â¹Ôʸ¤ò·«¤êÊÖ¤·¤Þ¤¹¡£ ²¼µ­¤Î½ñ¤­Êý¤Ë½¾¤¤¤Þ¤¹¡£

for (½é´ü²½; ¾ò·ï¼°; Áý¸º¼°) {
    ¼Â¹Ôʸ;
}

񂫪5-6

²¼µ­¤Î¥¹¥¯¥ê¥×¥È¤òkadai5-6.pl¤È¤·¤Æ½ñ¤­¡¢¼Â¹Ô·ë²Ì¤ò³Îǧ¤»¤è¡£

#!/usr/bin/perl

print "*** ¥±¡¼¥¹1 ***\n";
for ($count = 1; $count < 3; ++$count) {
    print "\$count = $count\n";
}
    
print "*** ¥±¡¼¥¹2 ***\n";
for ($count = 1; $count < 3; $count++) {
    print "\$count = $count\n";
}
¡Ê¼Â¹Ô·ë²Ì¡Ë

*** ¥±¡¼¥¹1 ***
$count = 1
$count = 2
*** ¥±¡¼¥¹2 ***
$count = 1
$count = 2

foreachʸ

Perl¤Ç¤Ï¡¢ÇÛÎó¤òÍѤ¤¤¿·«¤êÊÖ¤·¤Ë¤Ï¡¢foreach¤È¤¤¤¦ÊØÍø¤ÊÊýË¡¤â»È¤¨¤Þ¤¹¡£

foreach ÊÑ¿ô (¥ê¥¹¥È) {
    ¼Â¹Ôʸ;
}

¡ÊÎã¡Ë
@name = ('Kawai', 'Yamamoto', 'Takada');
foreach $person (@name){
    print "$person\n";
}

¾åµ­¤ÎÎã¤Ç¤Ï¡¢$person¤È¤¤¤¦ÊÑ¿ô¤Ë¡¢ÇÛÎó@name¤ÎÃæ¿È¤Ç¤¢¤ë¥ê¥¹¥È¤«¤é¡¢ Í×ÁǤ¬°ì¤Ä°ì¤ÄÅϤµ¤ì¤Æ¤¤¤­¤Þ¤¹¡£Í×ÁǤ¬ÅϤµ¤ì¤ë¤´¤È¤Ë printʸ¤¬¼Â¹Ô¤µ¤ì¤Þ¤¹¡£¤³¤Îforeach¤Ç¤Ï¡¢ÊÑ¿ô¤ò¾Êά¤Ç¤­¤Æ¡¢

@name = ('Kawai', 'Yamamoto', 'Takada');
foreach (@name){
    print "$_\n";
}

¤È¤â½ñ¤­Ä¾¤»¤Þ¤¹¡£¥ê¥¹¥È¤«¤éÆɤ߹þ¤ó¤ÀÍ×ÁǤϥǥե©¥ë¥ÈÊÑ¿ô $_¤ËÅϤµ¤ì¤ë¤È¤¤¤¦¤ï¤±¤Ç¤¹¡£

forʸ¤Î¡ÖÁý¸º¼°¡×¤¬1¤Ä¤º¤ÄÁý²Ã¤·¤Æ¤¤¤¯¾ì¹ç¤Ë¤Ï¡¢ ²¼µ­¤Î¤è¤¦¤Ëforeach¤Ç½ñ¤¯¤³¤È¤â¤Ç¤­¤Þ¤¹¡£

foreach $count (1 .. 5) {
    print "\$count = $count\n";
}

¾åµ­¤Î (1 .. 5) ¤Ï¡¢ (1, 2, 3, 4, 5) ¤È¤¤¤¦¥ê¥¹¥È¤ÈƱ¤¸¤Ç¤¹¤Î¤Ç¡¢

for ($count = 1; $count < 5; $count++){
    print "\$count = $count\n";
}

¤ÈÁ´¤¯Æ±¤¸·ë²Ì¤Ë¤Ê¤ê¤Þ¤¹¡£

񂫪5-7

ÇÛÎó¤È¥ê¥¹¥È¤Ç³Ø½¬¤·¤¿¤è¤¦¤Ë¡¢ sort¤ò»È¤¦¤ÈʤÓÂؤ¨¤¬¤Ç¤­¤ë¡£²¼µ­¤Ë¤Ï¡¢ sort¤Èforeach¤òÊ»ÍѤ·¤¿½èÍý¤ò¼¨¤·¤Æ¤¤¤ë¡£²¼µ­¤Î¥¹¥¯¥ê¥×¥È¤ò kadai5-7.pl¤È¤·¤Æ½ñ¤­¡¢¼Â¹Ô·ë²Ì¤ò³Îǧ¤»¤è¡£

#!/usr/bin/perl

@name = ('Shimoda', 'Kawai', 'Yamamoto', 'Takada');
foreach (sort(@name)) {
    print $_, "\n";
}
¡Ê¼Â¹Ô·ë²Ì¡Ë

Kawai
Shimoda
Takada
Yamamoto

±é»»»Òx

±é»»»Òx¤òÍѤ¤¤ë¤È¡¢Ê¸»úÎó¤Î·«¤êÊÖ¤·¤¬¤Ç¤­¤Þ¤¹¡£²¼µ­¤ÎÎã¤ò¸«¤Æ²¼¤µ¤¤¡£

print '*' x 20, "\n";
********************

'*'¤¬20²ó½ÐÎϤµ¤ì¤Æ¡¢²þ¹Ô¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤ò»È¤¨¤Ð ¼¡¤Î¤è¤¦¤Ê¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£´Ø¿ôlength¤Ë¤è¤ê¡¢ ʸ»úÎó¤ÎŤµ¤òÆÀ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

$str = 'Caution !';
print '*' x length($str), "\n";
print $str, "\n";
print '*' x length($str), "\n";
¡Ê¼Â¹Ô·ë²Ì¡Ë

*********
Caution !
*********

񂫪5-8

²¼µ­¤Î¥¹¥¯¥ê¥×¥È¤òkadai5-8.pl¤È¤·¤Æ½ñ¤­¡¢¼Â¹Ô·ë²Ì¤ò³Îǧ¤»¤è¡£

#!/usr/bin/perl

@sentence = (
    "Ãí°Õ !",
    "Íè½µ¤Î¥¼¥ß¤ÏµÙ¤ß¤Ç¤¹¡£",
    "¼¡²ó¤Î¥¼¥ß¤ÏÄɤäÆÏ¢Íí¤·¤Þ¤¹¡£"
);

foreach $str (@sentence){
    print '+', '-' x length($str), '+', "\n";
    print '|', $str, '|', "\n";
    print '+', '-' x length($str), '+', "\n";
}
¡Ê¼Â¹Ô·ë²Ì¡Ë

+------+
|Ãí°Õ !|
+------+
+----------------------+
|Íè½µ¤Î¥¼¥ß¤ÏµÙ¤ß¤Ç¤¹¡£|
+----------------------+
+------------------------------+
|¼¡²ó¤Î¥¼¥ß¤ÏÄɤäÆÏ¢Íí¤·¤Þ¤¹¡£|
+------------------------------+

[Perl¹ÖºÂ] [¿Üºê½ã°ì¥È¥Ã¥×¥Ú¡¼¥¸]
¿Üºê½ã°ì¡¡µþÅÔÂç³ØÂç³Ø ¹©³Ø¸¦µæ²ÊÅԻԴĶ­¹©³ØÀ칶 ´Ä¶­¾ðÊó³Ø¹ÖºÂ