²Ä¤G³¹ ²³æÅܶq

¡@¡@¥»³¹©ÒÁ¿ªº¨ç¼Æ¦h¼Æ¨Ï¥Î¤FUNIX¾Þ§@¨t²Îªº¯S©Ê¡A¦b«DUNIX¨t²Î¤¤¡A¤@¨Ç¨ç¼Æ¥i¯à¨S¦³©w¸q©Î¦³¤£¦Pªº¤u§@¤è¦¡¡A¨Ï¥Î®É½Ð¬d¬ÝPerlÁp¾÷¤åÀÉ¡C
¡½¡i ¤å¥ó¿é¤J/¿é¥X¨ç¼Æ ¡j
    ¥»¸`Á¿­z±q¤å¥ó¤¤Åª¨ú«H®§©M¦V¤å¥ó¼g¤J«H®§ªº¤º¸m®w¨ç¼Æ¡C
1¡B°ò¥»I/O¨ç¼Æ
    ¤@¨ÇI/O¨ç¼Æ¦b«e­±ªº³¹¸`¤¤¤w¦³Á¿­z¡A¦p
  • open¡J¤¹³\µ{§Ç³X°Ý¤å¥ó
  • close¡J²×¤î¤å¥ó³X°Ý
  • print¡J¤å¥ó¼g¤J¦r²Å¦ê
  • write¡J¦V¤å¥ó¼g¤J®æ¦¡¤Æ«H®§
  • printf¡J®æ¦¡¤Æ¦r²Å¦ê¨Ã¿é¥X¨ì¤å¥ó
    ³o¸Ì²³æ¦^ÅU¤@¤U¡A¦AÁ¿¤@¨Ç«e­±¥¼´£¨ìªº¨ç¼Æ¡C
1)open¨ç¼Æ
    open¨ç¼Æ±N¤å¥óÅܶq»P¬Y¤å¥óÁp¨t°_¨Ó¡A´£¨Ñ³X°Ý¤å¥óªº±µ¤f¡A¨Ò¦p¡Jopen(MYVAR, "/u/file"); ¦pªG¤å¥ó¥´¶}¦¨¥\¡A«hªð¦^«D¹s­È¡A§_«hªð¦^¹s¡C¯Ê¬Ù¦a¡Aopen¥´¶}¤å¥ó¥Î¥HŪ¨ú¨ä¤º®e¡A­Y·Q¥´¶}¤å¥ó¥H¼g¤J¤º®e¡A«h¦b¤å¥ó¦W«e¥[­Ó¤j©ó¸¹¡Jopen(MYVAR, ">/u/file"); ¦V¤w¦³ªº¤å¥ó¥½§À²K¥[¤º®e¥Î¨â­Ó¤j©ó¸¹¡Jopen(MYVAR, ">>/u/file"); ­Y·Q¥´¶}¤å¥ó§@¬°¼Æ¾Ú¾É¦Vªº©R¥O¡A«h¦b©R¥O«e¥[¤WºÞ¹D²Å(|)¡Jopen(MAIL, "|mail dave");
2)¥Îopen­«©w¦V¿é¤J
    ¥i¥H§â¥´¶}ªº¤å¥ó¥y¬`¥Î§@¦Vµ{§Ç¿é¤J¼Æ¾Úªº©R¥O¡A¤èªk¬O¦b©R¥O«á¥[ºÞ¹D²Å(|)¡A¦p¡J
    open(CAT, "cat file*|");
    ¹ïopenªº½Õ¥Î¹B¦æ©R¥Ocat file* ¡A¦¹©R¥O³Ð«Ø¤@­ÓÁ{®É¤å¥ó¡A³o­Ó¤å¥óªº¤º®e¬O©Ò¦³¥Hfile¥´ÀYªº¤å¥óªº¤º®e³s±µ¦Ó¦¨¡A¦¹¤å¥ó¬Ý§@¿é¤J¤å¥ó¡A¥i¥Î¤å¥óÅܶqCAT³X°Ý¡A¦p¡J
    $input = ;
    ¤U­±ªº¨Ò¤l¨Ï¥Î©R¥Owªº¿é¥X¨Ó¦C¥X·í«eµn¿ýªº©Ò¦³¥Î¤á¦W¡C
1 : #!/usr/local/bin/perl
2 :
3 : open (WOUT, "w|");
4 : $time = <WOUT>;
5 : $time =~ s/^ *//;
6 : $time =~ s/ .*//;
7 : ; # skip headings line
8 : @users = ;
9 : close (WOUT);
10: foreach $user (@users) {
11:   $user =~ s/ .*//;
12: }
13: print ("Current time: $time");
14: print ("Users logged on:\n");
15: $prevuser = "";
16: foreach $user (sort @users) {
17:   if ($user ne $prevuser) {
18:     print ("\t$user");
19:     $prevuser = $user;
20:   }
21: }
    µ²ªG¿é¥X¦p¤U¡J
Current time: 4:25pm
Users logged on:
  dave
  kilroy
  root
  zarquon
    w©R¥O¦C¥X·í«e®É¶¡¡B¨t²Î­t¸ü©Mµn¿ýªº¥Î¤á¡A¥H¤Î¨C­Ó¥Î¤áªº§@·~®É¶¡©M·í«e¹B¦æªº©R¥O¡A¦p¡J
4:25pm  up 1 day,  6:37,  6 users,  load average: 0.79, 0.36, 0.28
User     tty       login@  idle   JCPU   PCPU what
dave     ttyp0     2:26pm           27      3 w
kilroy   ttyp1     9:01am  2:27   1:04     11 -csh
kilroy   ttyp2     9:02am    43   1:46     27 rn
root     ttyp3     4:22pm     2               -csh
zarquon  ttyp4     1:26pm     4     43     16 cc myprog.c
kilroy   ttyp5     9:03am         2:14     48 /usr/games/hack
    ¤W¨Ò¤¤±qw©R¥Oªº¿é¥X¤¤¨ú¥X©Ò»Ýªº«H®§¡J·í«e®É¶¡©Mµn¿ýªº¥Î¤á¦W¡C²Ä3¦æ¹B¦æw©R¥O¡A¦¹³B¹ïopenªº½Õ¥Î«ü©wwªº¿é¥X¥Î§@µ{§Çªº¿é¤J¡A¥Î¤å¥óÅܶqWOUT¨Ó³X°Ý¸Ó¿é¤J¡C²Ä4¦æÅª¨ú²Ä¤@¦æ«H®§¡A§Y¡J
    4:25pm up 1 day, 6:37, 6 users, load average: 0.79, 0.36, 0.28
    ±µ¤U¨Óªº¨â¦æ±q³o¦æ¤¤©â¨ú¥X®É¶¡¡C­º¥ý¡A²Ä5¦æ§R°£°_©lªºªÅ®æ¡AµM«á²Ä6¦æ§R¥h°£®É¶¡©Mµ²§À´«¦æ²Å¤§¶¡ªº©Ò¦³¦r²Å¡A¦s¤JÅܶq$time¡C
    ²Ä7¦æ±qWOUTŪ¨ú²Ä¤G¦æ¡A³o¦æ¤¤µL¦³¥Î«H®§¡A¬G¤£§@³B²z¡C²Ä8¦æ§â³Ñ¤Uªº¦æ½áµ¹¼Æ²Õ@users¡AµM«á²Ä9¦æÃö³¬WOUT¡A²×¤î¹B¦æw©R¥Oªº¶iµ{¡C
    @users¤¤ªº¨C­Ó¤¸¯À³£¬O¤@¦æ¥Î¤á«H®§¡A¦]¬°¥»µ{§Ç¥u»Ý­n¨C¦æªº²Ä¤@­Ó³æµü¡A§Y¥Î¤á¦W¡A¬G10~12¦æ¥h±¼°£´«¦æ²Å¥~ªº¨ä¥¦¦r²Å¡A³o¤@´`Àôµ²§ô«á¡A@users¤¤¥u³Ñ¤U¥Î¤á¦Wªº¦Cªí¡C
    ²Ä13¦æ¿é¥X¦s¶J¦b$time¤¤ªº®É¶¡¡Aª`·N³o®Éprint¤£»Ý­n¥[¤W´«¦æ²Å¡A¦]¬°$time¤¤¦³¡C16~21¦æ¹ï@users¤¤ªº¥Î¤á¦W±Æ§Ç¨Ã¿é¥X¡C¦]¬°¦P¤@­Ó¥Î¤á¥i¥H¦h¦¸µn¿ý¡A©Ò¥H¥Î$preuser¦s¶J¿é¥Xªº³Ì«á¤@­Ó¥Î¤á¦W¡A¤U¦¸¿é¥X¼Æ²Õ¤¸¯À$user®É¡A¦pªG¨ä»P$preser¬Ûµ¥¡A«h¤£¿é¥X¡C
3)¤å¥ó­«©w¦V
    ³\¦hUNIX shell¥i¥H§â¼Ð·Ç¿é¥X¤å¥ó(STDOUT)©M¼Ð·Ç¿ù»~¤å¥ó(STDERR)³£­«©w¦V¨ì¦P¤@­Ó¤å¥ó¡A¨Ò¦p¦bBourne Shell¡]sh¡^¤¤¡A©R¥O
    $ foo > file1 2>&1
    ¹B¦æ©R¥Ofoo¨Ã§â¿é¥X¨ì¼Ð·Ç¿é¥X¤å¥ó©M¼Ð·Ç¿ù»~¤å¥óªº¤º®e¦s¶J¨ì¤å¥ófile1¤¤¡C¤U­±¬O¥ÎPerl¹ê²{³o¤@¥\¯àªº¨Ò¤l¡J
1: #!/usr/local/bin/perl
2:
3: open (STDOUT, ">file1") || die ("open STDOUT failed");
4: open (STDERR, ">&STDOUT") || die ("open STDERR failed");
5: print STDOUT ("line 1\n");
6: print STDERR ("line 2\n");
7: close (STDOUT);
8: close (STDERR);
    ¹B¦æ«á¡A¤å¥ófile1¤¤ªº¤º®e¬°¡J
     line 2
     line 1
    ¥i¥H¬Ý¨ì¡A³o¨â¦æ¨Ã¥¼«ö§Ú­Ì·Q¶Hªº¶¶§Ç¦s¶J¡A¬°¤°¤\©O¡H§Ú­Ì¨Ó¤ÀªR¤@¤U³o¬qµ{§Ç¡C
    ²Ä3¦æ­«©w¦V¼Ð·Ç¿é¥X¤å¥ó¡A¤èªk¬O¥´¶}¤å¥ófile1±N¥¦»P¤å¥óÅܶqSTDOUTÃöÁp¡A³o¤]Ãö³¬¤F¼Ð·Ç¿é¥X¤å¥ó¡C²Ä4¦æ­«©w¦V¼Ð·Ç¿ù»~¤å¥ó¡A°Ñ¼Æ>&STDOUT§i¶DPerl¸ÑÄÀ¾¹¨Ï¥Î¤w¥´¶}¨Ã»PSTDOUTÃöÁpªº¤å¥ó¡A§Y¤å¥óÅܶqSTDERR«ü¦V»PSTDOUT¬Û¦Pªº¤å¥ó¡C²Ä5¡B6¦æ¤À§O¦VSTDOUT©MSTDERR¼g¤J¼Æ¾Ú¡A¦]¬°³o¨â­Ó¤å¥óÅܶq«ü¦V¦P¤@­Ó¤å¥ó¡A¬G¨â¦æ¦r²Å¦ê§¡¼g¨ì¤å¥ófile1¤¤¡A¦ý¶¶§Ç«o¬O¿ù»~ªº¡A«ç¤\¦^¨Æ©O¡H
    °ÝÃD¦b©óUNIX¹ï¿é¥Xªº³B²z¤W¡C·í¨Ï¥Îprint¡]©Î¨ä¥¦¨ç¼Æ¡^¼g¤JSTDOUTµ¥¤å¥ó®É¡AUNIX¾Þ§@¨t²Î¯u¥¿©Ò°µªº¬O§â¼Æ¾Ú«þ¨©¨ì¤@¤ù¯S®íªº¤º¦s§Y½w¨R°Ï¤¤¡A±µ¤U¨Óªº¿é¥X¾Þ§@Ä~Äò¼g¤J½w¨R°Ïª½¨ì¼gº¡¡A·í½w¨R°Ïº¡¤F¡A´N§â¥þ³¡¼Æ¾Ú¹ê»Ú¿é¥X¡C¶H³o¼Ë¥ý¼g¤J½w¨R°Ï¦A§â¾ã­Ó½w¨R°Ïªº¤º®e¿é¥X¤ñ¨C¦¸³£¹ê»Ú¿é¥X©Òªá¶Oªº®É¶¡­n¤Ö±o¦h¡A¦]¬°¤@¯ë¨Ó»¡¡AI/O¤ñ¤º¦s¾Þ§@ºC±o¦h¡C
    µ{§Çµ²§ô®É¡A¥ô¦ó«DªÅªº½w¨R°Ï³£³Q¿é¥X¡AµM¦Ó¡A¨t²Î¬°STDOUT©MSTDERR¤À§OºûÅ@¤@¤ù½w¨R°Ï¡A¨Ã¥B¥ý¿é¥XSTDERRªº¤º®e¡A¦]¦¹¦s¶J¦bSTDERRªº½w¨R°Ï¤¤ªº¤º®eline 2¥X²{¦b¦s¶J¦bSTDOUTªº½w¨R°Ï¤¤ªº¤º®eline 1¤§«e¡C
    ¬°¤F¸Ñ¨M³o­Ó°ÝÃD¡A¥i¥H§i¶DPerl¸ÑÄÀ¾¹¤£¹ï¤å¥ó¨Ï¥Î½w¨R¡A¤èªk¬°¡J
     1¡B¥Îselect¨ç¼Æ¿ï¾Ü¤å¥ó
     2¡B§â­È1½áµ¹¨t²ÎÅܶq$|
    ¨t²ÎÅܶq$|«ü©w¤å¥ó¬O§_¶i¦æ½w¨R¦Ó¤£ºÞ¨ä¬O§_À³¸Ó¨Ï¥Î½w¨R¡C¦pªG$|¬°«D¹s­È«h¤£¨Ï¥Î½w¨R¡C$|»P¨t²ÎÅܶq$~©M$^¨ó¦P¤u§@¡A·í¥¼½Õ¥Îselect¨ç¼Æ®É¡A$|¼vÅT·í«e¯Ê¬Ù¤å¥ó¡C¤U¨Ò«Oµý¤F¿é¥Xªº¦¸§Ç¡J
1 : #!/usr/local/bin/perl
2 :
3 : open (STDOUT, ">file1") || die ("open STDOUT failed");
4 : open (STDERR, ">&STDOUT") || die ("open STDERR failed");
5 : $| = 1;
6 : select (STDERR);
7 : $| = 1;
8 : print STDOUT ("line 1\n");
9 : print STDERR ("line 2\n");
10: close (STDOUT);
11: close (STDERR);
    µ{§Ç¹B¦æ«á¡A¤å¥ófile1¤¤¤º®e¬°¡J
     line 1
     line 2
    ²Ä5¦æ±N$|½á¦¨1¡A§i¶DPerl¸ÑÄÀ¾¹·í«e¯Ê¬Ù¤å¥ó¤£¶i¦æ½w¨R¡A¦]¬°¥¼½Õ¥Îselect¡A·í«eªº¯Ê¬Ù¤å¥ó¬°­«©w¦V¨ì¤å¥ófile1ªºSTDOUT¡C²Ä6¦æ±N·í«e¯Ê¬Ù¤å¥ó³]¬°STDERR¡A²Ä7¦æ¤S³]¸m$|¬°1¡AÃö±¼¤F­«©w¦V¨ìfile1ªº¼Ð·Ç¿ù»~¤å¥óªº½w¨R¡C¥Ñ©óSTDOUT©MSTDERRªº½w¨R§¡³QÃö±¼¡A¦V¨äªº¿é¥X¥ß¨è³Q¼g¨ì¤å¥ó¤¤¡A¦]¦¹line 1¥X²{¦b²Ä¤@¦æ¡C
4)«ü©wŪ¼gÅv­­
    ¥´¶}¤@­Ó¬J¥iŪ¤S¥i¼gªº¤å¥ó¤èªk¬O¦b¤å¥ó¦W«e¥[¤W"+>"¡A¦p¤U¡J
     open (READWRITE, "+>file1");
    ¦¹»y¥y¥´¶}¬J¥iŪ¤S¥i¼gªº¤å¥ófile1¡A§Y¥i¥H­«¼g¨ä¤¤ªº¤º®e¡C¤å¥óŪ¼g¾Þ§@³Ì¦n»P®w¨ç¼Æseek©Mtell¤@°_¨Ï¥Î¡A³o¼Ë¥i¥H¸õ¨ì¤å¥ó¥ô¦ó¤@ÂI¡C
    ª`¡J¤]¥i¥Î«eºó"+<"Ö¸¶¨¿É¶ÁдȨÏÞ¡£
5)close¨ç¼Æ
    ¥Î©óÃö³¬¥´¶}ªº¤å¥ó¡C·í¥ÎcloseÃö³¬ºÞ¹D¡A§Y­«©w¦Vªº©R¥O®É¡Aµ{§Çµ¥«Ý­«©w¦Vªº©R¥Oµ²§ô¡A¦p¡J
     open (MYPIPE, "cat file*|");
     close (MYPIPE);
    ·íÃö³¬¦¹¤å¥óÅܶq®É¡Aµ{§Ç¼È°±¹B¦æ¡Aª½¨ì©R¥Ocat file*¹B¦æ§¹²¦¡C
6)print, printf©Mwrite¨ç¼Æ
    print¬O³o¤T­Ó¨ç¼Æ¤¤³Ì²³æªº¡A¥¦¦V«ü©wªº¤å¥ó¿é¥X¡A¦pªG¥¼«ü©w¡A«h¿é¥X¨ì·í«e¯Ê¬Ù¤å¥ó¤¤¡A¦p¡J
     print ("Hello, there!\n");
     print OUTFILE ("Hello, there!\n");
    ²Ä¤@¥y¿é¥X¨ì·í«e¯Ê¬Ù¤å¥ó¤¤¡A­Y¥¼½Õ¥Îselect¡A«h¬°STDOUT¡C²Ä¤G¥y¿é¥X¨ì¥Ñ¤å¥óÅܶqOUTFILE«ü©wªº¤å¥ó¤¤¡C
    printf¨ç¼Æ¥ý®æ¦¡¤Æ¦r²Å¦ê¦A¿é¥X¨ì«ü©w¤å¥ó©Î·í«e¯Ê¬Ù¤å¥ó¤¤¡A¦p¡J
     printf OUTFILE (¡§You owe me %8.2f", $owing);
    ¦¹»y¥y¨ú¥XÅܶq$owingªº­È¨Ã´À´«±¼¦ê¤¤ªº%8.2f¡A%8.2f¬O°ì®æ¦¡ªº¨Ò¤l¡A§â$owingªº­È¬Ý§@¯BÂI¼Æ¡C
    write¨ç¼Æ¨Ï¥Î¿é¥X®æ¦¡§â«H®§¿é¥X¨ì¤å¥ó¤¤¡A¦p¡J
     select (OUTFILE);
     $~ = "MYFORMAT";
     write;
    Ãö©óprintf©Mwrite¡A¸Ô¨£¡m²Äx³¹ ®æ¦¡¤Æ¿é¥X¡n¡C
7)select¨ç¼Æ
    select¨ç¼Æ±N³q¹L°Ñ¼Æ¶Ç»¼ªº¤å¥óÅܶq«ü©w¬°·sªº·í«e¯Ê¬Ù¤å¥ó¡A¦p¡J
     select (MYFILE);
    ³o¼Ë¡AMYFILE´N¦¨¤F·í«e¯Ê¬Ù¤å¥ó¡A·í¹ïprint¡Bwrite©Mprintfªº½Õ¥Î¥¼«ü©w¤å¥ó®É¡A´N¿é¥X¨ìMYFILE¤¤¡C
8)eof¨ç¼Æ
    eof¨ç¼Æ¬d¬Ý³Ì«á¤@¦¸Åª¤å¥ó¾Þ§@¬O§_¬°¤å¥ó³Ì«á¤@­Ó°O¿ý¡A¦pªG¬O¡A«hªð¦^«D¹s­È¡A¦pªG¤å¥óÁÙ¦³¤º®e¡Aªð¦^¹s¡C
    ¤@¯ë±¡ªp¤U¡A¹ïeofªº½Õ¥Î¤£¥[¬A¸¹¡A¦]¬°eof©Meof()¬Oµ¥®Äªº¡A¦ý»P<>¾Þ§@²Å¤@°_¨Ï¥Î®É¡Aeof©Meof()´N¤£¦P¤F¡C²{¦b§Ú­Ì¨Ó³Ð«Ø¨â­Ó¤å¥ó¡A¤À§O¥s°µfile1©Mfile2¡Cfile1ªº¤º®e¬°¡J
     This is a line from the first file.
     Here is the last line of the first file.
    file2ªº¤º®e¬°¡J
     This is a line from the second and last file.
     Here is the last line of the last file.
    ¤U­±´N¨Ó¬Ý¤@¤Ueof©Meof()ªº°Ï§O¡A²Ä¤@­Óµ{§Ç¬°¡J
1: #!/usr/local/bin/perl
2:
3: while ($line = <>) {
4:   print ($line);
5:   if (eof) {
6:     print ("-- end of current file --\n");
7:   }
8: }
    ¹B¦æµ²ªG¦p¤U¡J
$ program file1 file2
This is a line from the first file.
Here is the last line of the first file.
-- end of current file --
This is a line from the second and last file.
Here is the last line of the last file.
-- end of current file --
$
    ¤U­±§âeof§ï¬°eof()¡A²Ä¤G­Óµ{§Ç¬°¡J
1: #!/usr/local/bin/perl
2:
3: while ($line = <>) {
4:   print ($line);
5:   if (eof()) {
6:     print ("-- end of output --\n");
7:   }
8: }
    ¹B¦æµ²ªG¦p¤U¡J
$ program file1 file2
This is a line from the first file.
Here is the last line of the first file.
This is a line from the second and last file.
Here is the last line of the last file.
-- end of output --$
    ³o®É¡A¥u¦³©Ò¦³¤å¥ó³£Åª¹L¤F¡Aeof()¤~ªð¦^¯u¡A¦pªG¥u¬O¦h­Ó¤å¥ó¤¤«e´X­Óªº¥½§À¡Aªð¦^­È¬°°²¡A¦]¬°ÁÙ¦³­nŪ¨úªº¿é¤J¡C
9)¶¡±µ¤å¥óÅܶq
    ¹ï©ó¤W­z¦U¨ç¼Æopen, close, print, printf, write, select©Meof¡A³£¥i¥H¥Î²³æÅܶq¨Ó¥N´À¤å¥óÅܶq¡A³o®É¡A²³æÅܶq¤¤©Ò¦s¶Jªº¦r²Å¦ê´N³Q¬Ý§@¤å¥óÅܶq¦W¡A¤U­±´N¬O³o¼Ë¤@­Ó¨Ò¤l¡A¦¹¨Ò«Ü²³æ¡A´N¤£¸ÑÄÀ¤F¡C»Ý­n«ü¥Xªº¬O¡A¨ç¼Æopen, close, write, select©MeofÁÙ¤¹³\¥Îªí¹F¦¡¨Ó´À¥N¤å¥óÅܶq¡Aªí¹F¦¡ªº­È¥²¶·¬O¦r²Å¦ê¡A³Q¥Î§@¤å¥óÅܶq¦W¡C
1: #!/usr/local/bin/perl
2:
3: &open_file("INFILE", "", "file1");
4: &open_file("OUTFILE", ">", "file2");
5: while ($line = &read_from_file("INFILE")) {
6:   &print_to_file("OUTFILE", $line);
7: }
8:
9: sub open_file {
10:   local ($filevar, $filemode, $filename) = @_;
11:
12:   open ($filevar, $filemode . $filename) ||
13:     die ("Can't open $filename");
14: }
15: sub read_from_file {
16:   local ($filevar) = @_;
17:
18:   <$filevar>;
19: }
20: sub print_to_file {
21:   local ($filevar, $line) = @_;
22:
23:   print $filevar ($line);
24: }
2¡B¸õ¹L©M­«Åª¼Æ¾Ú
¨ç¼Æ¦Wseek
½Õ¥Î»yªkseek (filevar, distance, relative_to);
¸Ñ»¡¦b¤å¥ó¤¤¦V«e/«á²¾°Ê¡A¦³¤T­Ó°Ñ¼Æ¡J
1¡Bfilevar¡A¤å¥óÅܶq
2¡Bdistance¡A²¾°Êªº¦r¸`¼Æ¡A¥¿¼Æ¦V«e²¾°Ê¡A­t¼Æ©¹¦^²¾°Ê
3¡Breletive_to¡A­È¥i¬°0¡B1©Î2¡C¬°0®É¡A±q¤å¥óÀY¶}©l²¾°Ê¡A¬°1®É¡A¬Û¹ï©ó·í«e¦ì¸m¡]±N­nŪªº¤U¤@¦æ¡^²¾°Ê¡A¬°2®É¡A¬Û¹ï©ó¤å¥ó¥½§À²¾°Ê¡C
¹B¦æ¦¨¥\ªð¦^¯u¡]«D¹s­È¡^¡A¥¢±Ñ«hªð¦^¹s¡A±`»Ptell¨ç¼Æ¦X¥Î¡C
¨ç¼Æ¦Wtell
½Õ¥Î»yªktell (filevar);
¸Ñ»¡ªð¦^±q¤å¥óÀY¨ì·í«e¦ì¸mªº¶ZÂ÷¡C
ª`·N¡J
1¡Bseek©Mtell¤£¯à¥Î©ó«ü¦VºÞ¹Dªº¤å¥óÅܶq¡C
2¡Bseek©Mtell¤¤¤å¥óÅܶq°Ñ¼Æ¥i¨Ï¥Îªí¹F¦¡¡C
¨ç¼Æ¦Wread
½Õ¥Î»yªkread (filevar, result, length, skipval);
¸Ñ»¡read¨ç¼Æ³]­p±o»PUNIXªºfread¨ç¼Æµ¥®Ä¡A¥i¥HŪ¨ú¥ô·Nªø«×ªº¦r²Å¡]¦r¸`¡^¦s¤J¤@­Ó²³æÅܶq¡C¨ä°Ñ¼Æ¦³¥|­Ó¡J
1¡Bfilevar¡J¤å¥óÅܶq
2¡Bresult¡J¦s¶Jµ²ªGªºÂ²³æÅܶq¡]©Î¼Æ²Õ¤¸¯À¡^
3¡Blength¡JŪ¨úªº¦r¸`¼Æ
4¡Bskipval¡J¥i¿ï¶µ¡A«ü©wŪ¤å¥ó¤§«e¸õ¹Lªº¦r¸`¼Æ¡C
ªð¦^­È¬°¹ê»ÚŪ¨úªº¦r¸`¼Æ¡A¦pªG¤w¨ì¤F¤å¥ó¥½§À¡A«hªð¦^¹s¡A¦pªG¥X¿ù¡A«hªð¦^ªÅ¦ê¡C
¨ç¼Æ¦Wsysread
½Õ¥Î»yªksysread (filevar, result, length, skipval);
¸Ñ»¡§ó§ÖªºÅª¨ú¼Æ¾Ú¡A»PUNIX¨ç¼Æreadµ¥®Ä¡A°Ñ¼Æ»Pread¬Û¦P¡C
¨ç¼Æ¦Wsyswrite
½Õ¥Î»yªksyswrite (filevar, data, length, skipval);
¸Ñ»¡§ó§Öªº¼g¤J¼Æ¾Ú¡A»PUNIX¨ç¼Æwriteµ¥®Ä¡A°Ñ¼Æ¡J
1¡Bfilevar¡J±N­n¼g¤Jªº¤å¥ó
2¡Bdata¡J¦s¶J­n¼g¤J¼Æ¾ÚªºÅܶq
3¡Blength¡J­n¼g¤Jªº¦r¸`¼Æ
4¡Bskipval¼g¾Þ§@¤§«e¸õ¹Lªº¦r¸`¼Æ¡C
¨ç¼Æ¦Wgetc
½Õ¥Î»yªk$char = getc (infile);
¸Ñ»¡±q¤å¥ó¤¤Åª¨ú³æ­Ó¦r²Å¡C
¨ç¼Æ¦Wbinmode
½Õ¥Î»yªkbinmode (filevar);
¸Ñ»¡·í§Aªº¨t²Î¡]¦pÃþDOS¨t²Î¡^¹ï¤å¥»¤å¥ó©M¤G¶i»s¤å¥ó¦³©Ò°Ï§O®É¨Ï¥Î¡C¥²¶·¦b¥´¶}¤å¥ó«á¡BŪ¨ú¤å¥ó«e¨Ï¥Î¡C
¡½¡i ¥Ø¿ý³B²z¨ç¼Æ ¡j
¨ç¼Æ¦Wmkdir
½Õ¥Î»yªkmkdir (dirname, permissions);
¸Ñ»¡³Ð«Ø·s¥Ø¿ý¡A°Ñ¼Æ¬°¡J
1¡Bdirname¡J±N­n³Ð«Øªº¥Ø¿ý¦W¡A¥i¥H¬°¦r²Å¦ê©Îªí¹F¦¡
2¡Bpermissions¡J8¶i»s¼Æ¡A«ü©w¥Ø¿ýªº³X°ÝÅv­­¡A¨ä­È©M·N¸q¨£¤Uªí¡AÅv­­ªº²Õ¦X¤èªk¬°±N¬ÛÀ³ªº­È¬Û¥[¡C
­ÈÅv­­
4000  ¹B¦æ®É³]¸m¥Î¤áID  
2000¹B¦æ®É³]¸m²ÕID
1000Öß¶K¦ì
0400¾Ö¦³ªÌŪÅv­­
0200¾Ö¦³ªÌ¼gÅv­­
0100¾Ö¦³ªÌ°õ¦æÅv­­
0040²ÕŪÅv­­
0020²Õ¼gÅv­­
0010²Õ°õ¦æÅv­­
0004©Ò¦³¤HŪÅv­­
0002©Ò¦³¤H¼gÅv­­
0001©Ò¦³¤H°õ¦æÅv­­
¨ç¼Æ¦Wchdir
½Õ¥Î»yªkchdir (dirname);
¸Ñ»¡§ïÅÜ·í«e¤u§@¥Ø¿ý¡C°Ñ¼Ædirname¥i¥H¬°¦r²Å¦ê¡A¤]¥i¥H¬°ªí¹F¦¡¡C
¨ç¼Æ¦Wopendir
½Õ¥Î»yªkopendir (dirvar, dirname);
¸Ñ»¡¥´¶}¥Ø¿ý¡A»P¤U­±´X­Ó¨ç¼Æ¦X¥Î¡A¥i¬d¬Ý¬Y¥Ø¿ý¤¤¤å¥ó¦Cªí¡C°Ñ¼Æ¬°¡J
1¡Bdirvar¡J¥Ø¿ýÅܶq¡A»P¤å¥óÅܶqÃþ¦ü
2¡Bdirname¡J¥Ø¿ý¦W¡A¥i¬°¦r²Å¦ê©Îªí¹F¦¡
¦¨¥\ªð¦^¯u­È¡A¥¢±Ñªð¦^°²¡C
ª`¡Jµ{§Ç¤¤¥i¥Î¦P¦Wªº¥Ø¿ýÅܶq©M¤å¥óÅܶq¡A®Ú¾ÚÀô¹Ò½T©w¨ú¦¨¤À¡C
¨ç¼Æ¦Wclosedir
½Õ¥Î»yªkclosedir (mydir);
¸Ñ»¡Ãö³¬¥´¶}ªº¥Ø¿ý¡C
¨ç¼Æ¦Wreaddir
½Õ¥Î»yªkreaddir (mydir);
¸Ñ»¡½áµ¹Â²³æÅܶq®É¡A¨C¦¸½á¤©¤@­Ó¤å¥ó©Î¤l¥Ø¿ý¦W¡A¹ï¼Æ²Õ«h½á¤©¥þ³¡¤å¥ó©M¤l¥Ø¿ý¦W¡C
¨ç¼Æ¦Wtelldir
½Õ¥Î»yªklocation = telldir (mydir);
¸Ñ»¡¶H¦b¤å¥ó¤¤«e«á²¾°Ê¤@¼Ë¡Atelldir©M¤U­±ªºseekdir¥Î©ó¦b¥Ø¿ý¦Cªí¤¤«e«á²¾°Ê¡C
¨ç¼Æ¦Wseekdir
½Õ¥Î»yªkseekdir(mydir, location);
¸Ñ»¡location¥²¶·¬°telldirªð¦^ªº­È¡C
¨ç¼Æ¦Wrewinddir
½Õ¥Î»yªkrewinddir (mydir);
¸Ñ»¡±NŪ¨ú¥Ø¿ýªº¦ì¸m­«¸m¦^¶}ÀY¡A±q¦Ó¥i¥H­«Åª¥Ø¿ý¦Cªí¡C
¨ç¼Æ¦Wrmdir
½Õ¥Î»yªkrmdir (dirname);
¸Ñ»¡§R°£ªÅ¥Ø¿ý¡C¦¨¥\«hªð¦^¯u¡]«D¹s­È¡^¡A¥¢±Ñªð¦^°²¡]¹s­È¡^¡C
¡½¡i ¤å¥óÄÝ©Ê¨ç¼Æ ¡j
1¡B¤å¥ó­«©w¦ì¨ç¼Æ
¨ç¼Æ¦Wrename
½Õ¥Î»yªkrename (oldname, newname);
¸Ñ»¡§ïÅܤå¥ó¦W©Î²¾°Ê¨ì¥t¤@­Ó¥Ø¿ý¤¤¡A°Ñ¼Æ¥i¬°¦r²Å¦ê©Îªí¹F¦¡¡C
¨ç¼Æ¦Wunlink
½Õ¥Î»yªknum = unlink (filelist);
¸Ñ»¡§R°£¤å¥ó¡C°Ñ¼Æ¬°¤å¥ó¦W¦Cªí¡Aªð¦^­È¬°¹ê»Ú§R°£ªº¤å¥ó¼Æ¥Ø¡C
¦¹¨ç¼Æ¤§©Ò¥H¥sunlink¦Ó¤£¥sdelete¬O¦]¬°¥¦¹ê»Ú©Ò°µªº¬O§R°£¤å¥óªºÃì±µ¡C
2¡BÃì±µ©M²Å¸¹Ãì±µ¨ç¼Æ
¨ç¼Æ¦Wlink
½Õ¥Î»yªklink (newlink, file);
¸Ñ»¡³Ð«Ø²{¦³¤å¥óªºÃì±µ--µwÃì±µ¡Afile¬O³QÃì±µªº¤å¥ó¡Anewlink¬O³Q³Ð«ØªºÃì±µ¡C
¦¨¥\ªð¦^¯u¡A¥¢±Ñªð¦^°²¡C
·í§R°£³o¨â­ÓÃì±µ¤¤ªº¤@­Ó®É¡AÁÙ¥i¥H¥Î¥t¤@­Ó¨Ó³X°Ý¸Ó¤å¥ó¡C
¨ç¼Æ¦Wsymlink
½Õ¥Î»yªksymlink (newlink, file);
¸Ñ»¡³Ð«Ø²{¦³¤å¥óªº²Å¸¹Ãì±µ¡A§Y«ü¦V¤å¥ó¦W¡A¦Ó¤£¬O«ü¦V¤å¥ó¥»¨­¡C°Ñ¼Æ©Mªð¦^­È¦P¤W¡C
·í­ì¤å¥ó³Q§R°£¡]¦p¡J³Qunlinke¨ç¼Æ§R°£¡^¡A«h³Q³Ð«ØÃì±µ¤£¥i¥Î¡A°£«D¦A³Ð«Ø¤@­Ó»P­ì³QÃì±µªº¤å¥ó¦P¦Wªº¤å¥ó¡C
¨ç¼Æ¦Wreadlink
½Õ¥Î»yªkfilename = readlink (linkname);
¸Ñ»¡¦pªGlinkname¬°²Å¸¹Ãì±µ¤å¥ó¡Aªð¦^¨ä¹ê»Ú«ü¦Vªº¤å¥ó¡C§_«hªð¦^ªÅ¦ê¡C
3¡B¤å¥ó³\¥iÅv¨ç¼Æ
¨ç¼Æ¦Wchmod
½Õ¥Î»yªkchmod (permissions, filelist);
¸Ñ»¡§ïÅܤå¥óªº³X°ÝÅv­­¡C°Ñ¼Æ¬°¡J
1¡Bpermissions¬°±N­n³]¸mªºÅv­­¡A¨ä§t¸q¨£¤W­zmkdir¤¤Åv­­ªí
2¡Bfilelist¬°±ý§ïÅÜÅv­­ªº¤å¥ó¦Cªí
¨ç¼Æ¦Wchown
½Õ¥Î»yªkchown (userid, groupid, filelist);
¸Ñ»¡§ïÅܤå¥óªºÄÝ¥D¡A¦³¤T­Ó°Ñ¼Æ¡J
1¡Buserid¡J·sÄÝ¥Dªº(¼Æ¦r)ID¸¹
2¡Bgroupid¡J·sªº²Õ(¼Æ¦r)ID¸¹¡A-1¬°«O¯d­ì²Õ
3¡Bfilelist¡J±ý§ïÅÜÄÝ¥Dªº¤å¥ó¦Cªí
¨ç¼Æ¦Wumask
½Õ¥Î»yªkoldmaskval = umask (maskval);
¸Ñ»¡³]¸m¤å¥ó³X°ÝÅv­­±»½X¡Aªð¦^­È¬°·í«e±»½X¡C
4¡B¨ä¥¦ÄÝ©Ê¨ç¼Æ
¨ç¼Æ¦Wtruncate
½Õ¥Î»yªktruncate (filename, length);
¸Ñ»¡±N¤å¥óªºªø«×´î¤Ö¨ìlength¦r¸`¡C¦pªG¤å¥óªø«×¤w¸g¤p©ólength¡A«h¤£°µ¥ô¦ó¨Æ¡C¨ä¤¤filename¥i¥H¬°¤å¥ó¦W¡A¤]¥i¥H¬°¤å¥óÅܶq
¨ç¼Æ¦Wstat
½Õ¥Î»yªkstat (file);
¸Ñ»¡Àò¨ú¤å¥óª¬ºA¡C°Ñ¼Æfile¥i¬°¤å¥ó¦W¤]¥i¬°¤å¥óÅܶq¡Cªð¦^¦Cªí¤¸¯À¨Ì¦¸¬°¡J
  • ¤å¥ó©Ò¦b³]³Æ
  • ¤º³¡°Ñ¦Ò¸¹(inode)
  • ³X°ÝÅv­­
  • µwÃì±µ¼Æ
  • ÄÝ¥Dªº(¼Æ¦r)ID
  • ©ÒÄݲժº(¼Æ¦r)ID
  • ³]³ÆÃþ«¬¡]¦pªGfile¬O³]³Æªº¸Ü¡^
  • ¤å¥ó¤j¤p¡]¦r¸`¼Æ¡^
  • ³Ì«á³X°Ý®É¶¡
  • ³Ì«á­×§ï®É¶¡³Ì«á§ïÅܪ¬ºA®É¶¡
  • I/O¾Þ§@³Ì¨Î¶ô¤j¤p
  • ¤À°tµ¹¸Ó¤å¥óªº¶ô¼Æ
¨ç¼Æ¦Wlstat
½Õ¥Î»yªklstat (file);
¸Ñ»¡»PstatÃþ¦ü¡A°Ï§O¬O±Nfile¬Ý§@¬O²Å¸¹Ãì±µ¡C
¨ç¼Æ¦Wtime
½Õ¥Î»yªkcurrtime = time();
¸Ñ»¡ªð¦^±q1970¦~1¤ë1¤é°_²Ö­p¬í¼Æ¡C
¨ç¼Æ¦Wgmtime
½Õ¥Î»yªktimelist = gmtime (timeval);
¸Ñ»¡±N¥Ñtime, stat ©Î -A ©M -M ¤å¥ó´ú¸Õ¾Þ§@²Åªð¦^ªº®É¶¡Âà´«¦¨®æªL«Âªv®É¶¡¡Cªð¦^¦Cªí¤¸¯À¨Ì¦¸¬°¡J
  • ¬í
  • ¤ÀÄÁ
  • ¤p®É¡A0~23
  • ¤é´Á
  • ¤ë¥÷¡A0~11(¤@¤ë~¤Q¤G¤ë)
  • ¦~¥÷
  • ¬P´Á¡A0~6(©P¤é~©P¤»)
  • ¤@¦~¤¤ªº¤é´Á¡A0~364
  • ¬O§_®L¥O®Éªº¼Ð§Ó
    ¸Ô¨£UNIXªºgmtimeÀ°§U¡C
¨ç¼Æ¦Wlocaltime
½Õ¥Î»yªktimelist = localtime (timeval);
¸Ñ»¡»PgmtimeÃþ¦ü¡A°Ï§O¬°±N®É¶¡­ÈÂà´«¬°¥»¦a®É¶¡¡C
¨ç¼Æ¦Wutime
½Õ¥Î»yªkutime (acctime, modtime, filelist);
¸Ñ»¡§ïÅܤå¥óªº³Ì«á³X°Ý®É¶¡©M³Ì«á§ó§ï®É¶¡¡C¨Ò¦p¡J
$acctime = -A "file1";
$modtime = -M "file1";
@filelist = ("file2", "file3");
utime ($acctime, $modtime, @filelist);
¨ç¼Æ¦Wfileno
½Õ¥Î»yªkfiledesc = fileno (filevar);
¸Ñ»¡ªð¦^¤å¥óªº¤º³¡UNIX¤å¥ó´y­z¡C°Ñ¼Æfilevar¬°¤å¥óÅܶq
¨ç¼Æ¦Wfcntl
flock
½Õ¥Î»yªkfcntl (filevar, fcntlrtn, value);
flock (filevar, flockop);
¸Ñ»¡¸Ô¨£¦P¦WUNIX¨ç¼ÆÀ°§U¡C
¡½¡i ¨Ï¥ÎDBM¤å¥ó ¡j
   Perl¤¤¥i¥ÎÃöÁp¼Æ²Õ¨Ó³X°ÝDBM¤å¥ó¡A©Ò¥Î¨ç¼Æ¬°dbmopen©Mdbmclose¡A¦bPerl5¤¤¡A¤w¥Îtie©Muntie¥N´À¡C
¨ç¼Æ¦Wdbmopen
½Õ¥Î»yªkdbmopen (array, dbmfilename, permissions);
¸Ñ»¡±NÃöÁp¼Æ²Õ»PDBM¤å¥ó¬ÛÃöÁp¡C°Ñ¼Æ¬°¡J
1¡Barray¡J©Ò¥ÎÃöÁp¼Æ²Õ
2¡Bdbmfilename¡J±N¥´¶}ªºDBM¤å¥ó¦W
3¡B³X°ÝÅv­­¡A¸Ô¨£mkdir
¨ç¼Æ¦Wdbmclose
½Õ¥Î»yªkdbmclose (array);
¸Ñ»¡Ãö³¬DBM¤å¥ó¡A©î°£ÃöÁp¼Æ²Õ»P¤§ªºÃö¨t¡C

CopyRight © 2001¸¾ º~ ¬Ó ´ÂAll Rights Reserved