8ϤΥץ륳
---------------------
ܼʥڡֹ
P176-1
P176-2
P177
P179-1
P179-2
P180-1
P180-2
P184
P185-1
P185-6
P186
P187
P191-1
P191-2
P192
P194
P195-1
P195-2
---------------------

P176-1
# ե򥪡ץ󤷡Ƥɽ
#  open.pl

# ե򥪡ץ󤹤
open(F, "test.txt") || die "test.txt 򥪡ץǤޤ:$!\n";
while (<F>) {
  # Ƥɽ
  print;
}

# եΥ
close(F);

P176-2
# ϥեʸ񤭽Ф
#  write.pl

# ϥեȤƥץ
open(F, ">output.txt") || 
  die "output.txt Ǥޤ:$!\n";

# ʸեϥɥF˽񤭽Ф
print F "ˤϡϺ\n";

close(F);

P177
# ɲýϥեʸ񤭽Ф
#  append.pl

# ɲýϥեȤƥץ
open(F, ">>output.txt") || 
  die "output.txt ɲäǤޤ:$!\n";

# ʸեϥɥF˽񤭽Ф
print F "ФϡֻҤ\n";

close(F);

P179-1
# Ϥ򤽤Τޤޥ
#  echo.pl

do {
  # ɸϤ
  $string = <STDIN>;
  # ɽ
  print $string;
  # QUITޤʸȽλ
} until ($string =~ /QUIT/);

P179-2
# ɸϤɸ२顼Ϥΰ㤤
#  std.pl

# ɸ
print STDOUT "ɸϤ˽ϤƤޤ\n";

# ɸ२顼
print STDERR "ɸ२顼Ϥ˽ϤƤޤ\n";

P180-1
# ɸϤȥե륹ץ
#  which.pl

# ɸϡեΤɤ餫
while (<>) {
  # Ƥɽ
  print;
}

P180-2
# ɽ
#  argv.pl

# οɽ
print "ARGVο:" . @ARGV . "\n";

# ưƤɽ
for ($number = 0; $number < @ARGV; $number++) {
  print "$number: $ARGV[$number]\n";
}

P184
# ե̾ѹ
#  rename.pl

print "ѹΥե̾: ";
$from_file = <STDIN>;
print "ѹΥե̾: ";
$to_file = <STDIN>;

chomp($from_file, $to_file);

# ̾ѹ
rename($from_file, $to_file) || 
  die "$from_file  $to_file ̾ѹǤޤ:$!\n";

P185-1
# ꤷե
#  unlink.pl

$file = <STDIN>;
chomp($file);
unlink($file) || die "$file Ǥޤ:$!\n";

P185-6
# եΥƥ
#  filetest.pl

if (@ARGV > 0) {
  # ǽΰե̾ȸʤ
  print "$ARGV[0] ̾ΥեǤ\n" if (-e $ARGV[0]);
  print "$ARGV[0] ϥǥ쥯ȥǤ\n" if (-d $ARGV[0]);
  print "$ARGV[0] ϥܥå󥯤Ǥ\n" if (-l $ARGV[0]);
  print "$ARGV[0] ϤʤͭԤǤ\n" if (-o $ARGV[0]);
  print "$ARGV[0] ̾դѥפǤ\n" if (-p $ARGV[0]);
  print "$ARGV[0] ɤ߹ޤ\n" if (-r $ARGV[0]);
  print "$ARGV[0] Ͻ񤭽Фޤ\n" if (-w $ARGV[0]);
  print "$ARGV[0] ϼ¹ԤǤޤ\n" if (-x $ARGV[0]);
  print "$ARGV[0] ϥХʥեǤ\n" if (-B $ARGV[0]);
  print "$ARGV[0] ϥƥȥեǤ\n" if (-T $ARGV[0]);
  print "$ARGV[0] ϥåȥեǤ\n" if (-S $ARGV[0]);
} else {
  print "ե̾ꤷƤ\n";
}

P186
# ե븢¤ѹ
#  chmod.pl

print "ե̾ꤷƤ: ";
$file = <STDIN>;
chomp($file);

# ֤ɽ
print "\n";
&fileinfo( );

print "ͤ 100 ˤޤ\n";
chmod(0100, $file);
&fileinfo( );

print "ͤ 200 ˤޤ\n";
chmod(0200, $file);
&fileinfo( );

print "ͤ 400 ˤޤ\n";
chmod(0400, $file);
&fileinfo( );

print "ͤ 600 ˤޤ\n";
chmod(0600, $file);
&fileinfo( );

print "ͤ 700 ˤޤ\n";
chmod(0700, $file);
&fileinfo( );

sub fileinfo {
  # եξɽ
  print "\t$file ɤ߹ޤ\n" if (-r $file);
  print "\t$file Ͻ񤭹ޤ\n" if (-w $file);
  print "\t$file ϼ¹ԤǤޤ\n" if (-x $file);
}

P187
# եξܺ٤ʾɽ
#  stat.pl

print "ե̾ꤷƤ: ";
$file = <STDIN>;
chomp($file);

# statǾ
($device, $inode, $mode, $nlink, $userid, $groupid, $rdev, 
 $size,$accesstime, $modifytime, $changetime, $blocksize, 
 $blockcount)
  = stat($file);

# ƾɽ
printf( "ǥХ:		%d\n" .
        "i-node:		%d\n" .
        ":		%o\n" .
        ":		%d\n" .
        "桼ID:	%d\n" .
        "롼ID:	%d\n" .
        "ǥХ̻:	%d\n" .
        ":	%d\n" .
        ":	%d\n" .
        ":		%d\n" .
        "i-nodeѹ:	%d\n" .
        "֥å:	%d\n" .
        "֥å:		%d\n",
        $device, $inode, $mode, $nlink, $userid, $groupid, 
        $rdev, $size,$accesstime, $modifytime, $changetime, 
        $blocksize, $blockcount);

P191-1
# ꤷǥ쥯ȥ
#  mkdir.pl

print "ǥ쥯ȥ̾ꤷƤ: ";
$directory = <STDIN>;
chomp($directory);

if (!-d $directory) {
  # ǥ쥯ȥ꤬ޤʤ
  # ǥ쥯ȥ
  mkdir($directory, 0755) || 
    die "$directory Ǥޤ:$!\n";
} else {
  # Ǥ¸
  print "$directory ϤǤ¸ߤޤ\n";
}

P191-2
# ǥ쥯ȥκ
#  rmdir.pl

print "ǥ쥯ȥ̾ꤷƤ: ";
$directory = <STDIN>;
chomp($directory);

if (-d $directory) {
  # ǥ쥯ȥ꤬Ǥˤ
  # ǥ쥯ȥ
  rmdir($directory) || die "$directory Ǥޤ:$!\n";
} else {
  # ǥ쥯ȥ꤬ʤǥ쥯ȥǤϤʤ
  print "$directory ¸ߤޤ󡣤ޤϡǥ쥯ȥǤϤޤ\n";
}

P192
# ǥ쥯ȥƤɤ߹ɽ
#  readdir.pl

# ߤΥǥ쥯ȥ򥪡ץ󤹤
opendir(DIR, ".") || die ". 򥪡ץǤޤ:$!\n";

# ɤ߹
@files = readdir(DIR);

# 
closedir(DIR);

# ɽ
foreach (@files) {
  print "$_\n";
}

P194
# shellؿˤ¹
#  shell.pl

# ls ¹
system("ls");

P195-1
# execؿˤ¹
#  exec.pl

# ls ¹
exec("ls");
print "顼ȯޤ:$!\n";

P195-2
# forkȤä2Ĥν
#  fork.pl

if ($pid = fork( )) {
  # ƥץ
  for ($i = 1; $i <= 3; $i++) {
    print "ƥץ\n";
    sleep(3);
  }
  waitpid($pid, 0);
}
elsif (defined $pid) {
  # ҥץ
  for ($i = 1; $i <= 5; $i++) {
    print "ҥץ\n";
    sleep(1);
  }
} else {
  die "forkǤޤ: $!\n";
}

