8͂̃TvR[h
---------------------
ڎiy[Wԍj
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
# t@CI[vA̓e\
#  open.pl

# t@CI[v
open(F, "test.txt") || die "test.txt I[vł܂:$!\n";
while (<F>) {
  # e\
  print;
}

# t@C̃N[Y
close(F);

P176-2
# o̓t@Cɕo
#  write.pl

# VKo̓t@CƂăI[v
open(F, ">output.txt") || 
  die "output.txt 쐬ł܂:$!\n";

# t@CnhFɏo
print F "ɂ́AYB\n";

close(F);

P177
# ǉo̓t@Cɕo
#  append.pl

# ǉo̓t@CƂăI[v
open(F, ">>output.txt") || 
  die "output.txt ɒǉł܂:$!\n";

# t@CnhFɏo
print F "΂́AԎqB\n";

close(F);

P179-1
# ͂̂܂܃GR[
#  echo.pl

do {
  # W͂荞
  $string = <STDIN>;
  # \
  print $string;
  # QUIT܂ޕ񂪓ƏI
} until ($string =~ /QUIT/);

P179-2
# Wo͂ƕWG[o͂̈Ⴂ
#  std.pl

# Wo
print STDOUT "Wo͂ɏo͂Ă܂B\n";

# WG[o
print STDERR "WG[o͂ɏo͂Ă܂B\n";

P180-1
# W͂ƃt@C̑o󂯂XNvg
#  which.pl

# ẂAt@Ĉǂ炩擾
while (<>) {
  # e\
  print;
}

P180-2
# \
#  argv.pl

# ̐\
print "ARGV̐:" . @ARGV . "\n";

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

P184
# t@C̕ύX
#  rename.pl

print "ύXÕt@C: ";
$from_file = <STDIN>;
print "ύX̃t@C: ";
$to_file = <STDIN>;

chomp($from_file, $to_file);

# O̕ύX
rename($from_file, $to_file) || 
  die "$from_file  $to_file ɖOύXł܂:$!\n";

P185-1
# w肵t@C폜
#  unlink.pl

$file = <STDIN>;
chomp($file);
unlink($file) || die "$file 폜ł܂:$!\n";

P185-6
# t@C̃eXg
#  filetest.pl

if (@ARGV > 0) {
  # ŏ̈t@CƌȂ
  print "$ARGV[0] ͒ʏ̃t@CłB\n" if (-e $ARGV[0]);
  print "$ARGV[0] ̓fBNgłB\n" if (-d $ARGV[0]);
  print "$ARGV[0] ̓V{bNNłB\n" if (-l $ARGV[0]);
  print "$ARGV[0] ͂ȂL҂łB\n" if (-o $ARGV[0]);
  print "$ARGV[0] ͖OtpCvłB\n" if (-p $ARGV[0]);
  print "$ARGV[0] ͓ǂݍ߂܂B\n" if (-r $ARGV[0]);
  print "$ARGV[0] ͏o܂B\n" if (-w $ARGV[0]);
  print "$ARGV[0] ͎sł܂B\n" if (-x $ARGV[0]);
  print "$ARGV[0] ̓oCit@CłB\n" if (-B $ARGV[0]);
  print "$ARGV[0] ̓eLXgt@CłB\n" if (-T $ARGV[0]);
  print "$ARGV[0] ̓\Pbgt@CłB\n" if (-S $ARGV[0]);
} else {
  print "t@Cw肵ĂB\n";
}

P186
# t@C̕ύX
#  chmod.pl

print "t@Cw肵Ă: ";
$file = <STDIN>;
chomp($file);

# Ԃ\
print "\n";
&fileinfo( );

print "l 100 ɂ܂B\n";
chmod(0100, $file);
&fileinfo( );

print "l 200 ɂ܂B\n";
chmod(0200, $file);
&fileinfo( );

print "l 400 ɂ܂B\n";
chmod(0400, $file);
&fileinfo( );

print "l 600 ɂ܂B\n";
chmod(0600, $file);
&fileinfo( );

print "l 700 ɂ܂B\n";
chmod(0700, $file);
&fileinfo( );

sub fileinfo {
  # t@C̏\
  print "\t$file ͓ǂݍ߂܂B\n" if (-r $file);
  print "\t$file ͏߂܂B\n" if (-w $file);
  print "\t$file ͎sł܂B\n" if (-x $file);
}

P187
# t@C̏ڍׂȏ\
#  stat.pl

print "t@Cw肵Ă: ";
$file = <STDIN>;
chomp($file);

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

# e\
printf( "foCX:		%d\n" .
        "i-node:		%d\n" .
        "l:		%o\n" .
        "N:		%d\n" .
        "[U[ID:	%d\n" .
        "O[vID:	%d\n" .
        "foCXʎq:	%d\n" .
        "TCY:	%d\n" .
        "ANZX:	%d\n" .
        "XV:		%d\n" .
        "i-nodeύX:	%d\n" .
        "ubNTCY:	%d\n" .
        "ubN:		%d\n",
        $device, $inode, $mode, $nlink, $userid, $groupid, 
        $rdev, $size,$accesstime, $modifytime, $changetime, 
        $blocksize, $blockcount);

P191-1
# w肵fBNg쐬
#  mkdir.pl

print "쐬fBNgw肵Ă: ";
$directory = <STDIN>;
chomp($directory);

if (!-d $directory) {
  # fBNg܂Ȃ
  # fBNg쐬
  mkdir($directory, 0755) || 
    die "$directory 쐬ł܂:$!\n";
} else {
  # łɑ
  print "$directory ͂łɑ݂܂B\n";
}

P191-2
# fBNg̍폜
#  rmdir.pl

print "폜fBNgw肵Ă: ";
$directory = <STDIN>;
chomp($directory);

if (-d $directory) {
  # fBNgłɂ
  # fBNg폜
  rmdir($directory) || die "$directory 폜ł܂:$!\n";
} else {
  # fBNgȂfBNgł͂Ȃ
  print "$directory ݂͑܂B܂́AfBNgł͂܂B\n";
}

P192
# fBNg̓eǂݍݕ\
#  readdir.pl

# ݂̃fBNgI[v
opendir(DIR, ".") || die ". I[vł܂:$!\n";

# zɓǂݍ
@files = readdir(DIR);

# N[Y
closedir(DIR);

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

P194
# shell֐ɂs
#  shell.pl

# ls s
system("ls");

P195-1
# exec֐ɂs
#  exec.pl

# ls s
exec("ls");
print "G[܂B:$!\n";

P195-2
# forkg2̏
#  fork.pl

if ($pid = fork( )) {
  # evZX
  for ($i = 1; $i <= 3; $i++) {
    print "evZX\n";
    sleep(3);
  }
  waitpid($pid, 0);
}
elsif (defined $pid) {
  # qvZX
  for ($i = 1; $i <= 5; $i++) {
    print "qvZX\n";
    sleep(1);
  }
} else {
  die "forkł܂: $!\n";
}

