最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

第十一章  文件系統(tǒng)

by flamephoenix

一、文件輸入/輸出函數(shù)
  1、基本I/O函數(shù)
    1)open函數(shù)
    2)用open重定向輸入
    3)文件重定向
    4)指定讀寫權(quán)限
    5)close函數(shù)
    6)print, printf和write函數(shù)
    7)select函數(shù)
    8)eof函數(shù)
    9)間接文件變量
  2、跳過和重讀數(shù)據(jù)
  3、系統(tǒng)讀寫函數(shù)
  4、用getc讀取字符
  5、用binmode讀取二進(jìn)制文件
二、目錄處理函數(shù)
  1、mkdir
  2、chdir
  3、opendir
  4、closedir
  5、readdir
  6、telldir
  7、seekdir
  8、rewinddir
  9、rmdir
三、文件屬性函數(shù)
  1、文件重定位函數(shù)
  2、鏈接和符號鏈接函數(shù)
  3、文件許可權(quán)函數(shù)
  4、其他屬性函數(shù)
四、使用DBM文件

    本章所講的函數(shù)多數(shù)使用了UNIX操作系統(tǒng)的特性,在非UNIX系統(tǒng)中,一些函數(shù)可能沒有定義或有不同的工作方式,使用時請查看Perl聯(lián)機(jī)文檔。
一、文件輸入/輸出函數(shù)
    本節(jié)講述從文件中讀取信息和向文件寫入信息的內(nèi)置庫函數(shù)。
1、基本I/O函數(shù)
    一些I/O函數(shù)在前面的章節(jié)中已有講述,如
  • open:允許程序訪問文件
  • close:終止文件訪問
  • print:文件寫入字符串
  • write:向文件寫入格式化信息
  • printf:格式化字符串并輸出到文件
  •     這里簡單回顧一下,再講一些前面未提到的函數(shù)。
    1)open函數(shù)
        open函數(shù)將文件變量與某文件聯(lián)系起來,提供訪問文件的接口,例如:open(MYVAR, "/u/file"); 如果文件打開成功,則返回非零值,否則返回零。缺省地,open打開文件用以讀取其內(nèi)容,若想打開文件以寫入內(nèi)容,則在文件名前加個大于號:open(MYVAR, ">/u/file"); 向已有的文件末尾添加內(nèi)容用兩個大于號:open(MYVAR, ">>/u/file"); 若想打開文件作為數(shù)據(jù)導(dǎo)向的命令,則在命令前加上管道符(|):open(MAIL, "|mail dave");
    2)用open重定向輸入
        可以把打開的文件句柄用作向程序輸入數(shù)據(jù)的命令,方法是在命令后加管道符(|),如:
        open(CAT, "cat file*|");
        對open的調(diào)用運(yùn)行命令cat file* ,此命令創(chuàng)建一個臨時文件,這個文件的內(nèi)容是所有以file打頭的文件的內(nèi)容連接而成,此文件看作輸入文件,可用文件變量CAT訪問,如:
        $input = ;
        下面的例子使用命令w的輸出來列出當(dāng)前登錄的所有用戶名。
    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: }
        結(jié)果輸出如下:
    Current time: 4:25pm
    Users logged on:
      dave
      kilroy
      root
      zarquon
        w命令列出當(dāng)前時間、系統(tǒng)負(fù)載和登錄的用戶,以及每個用戶的作業(yè)時間和當(dāng)前運(yùn)行的命令,如:
      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命令的輸出中取出所需的信息:當(dāng)前時間和登錄的用戶名。第3行運(yùn)行w命令,此處對open的調(diào)用指定w的輸出用作程序的輸入,用文件變量WOUT來訪問該輸入。第4行讀取第一行信息,即:
        4:25pm up 1 day, 6:37, 6 users, load average: 0.79, 0.36, 0.28
        接下來的兩行從這行中抽取出時間。首先,第5行刪除起始的空格,然后第6行刪去除時間和結(jié)尾換行符之間的所有字符,存入變量$time。
        第7行從WOUT讀取第二行,這行中無有用信息,故不作處理。第8行把剩下的行賦給數(shù)組@users,然后第9行關(guān)閉WOUT,終止運(yùn)行w命令的進(jìn)程。
        @users中的每個元素都是一行用戶信息,因?yàn)楸境绦蛑恍枰啃械牡谝粋單詞,即用戶名,故10~12行去掉除換行符外的其它字符,這一循環(huán)結(jié)束后,@users中只剩下用戶名的列表。
        第13行輸出存貯在$time中的時間,注意這時print不需要加上換行符,因?yàn)?time中有。16~21行對@users中的用戶名排序并輸出。因?yàn)橥粋用戶可以多次登錄,所以用$preuser存貯輸出的最后一個用戶名,下次輸出數(shù)組元素$user時,如果其與$preser相等,則不輸出。
    3)文件重定向
        許多UNIX shell可以把標(biāo)準(zhǔn)輸出文件(STDOUT)和標(biāo)準(zhǔn)錯誤文件(STDERR)都重定向到同一個文件,例如在Bourne Shell(sh)中,命令
        $ foo > file1 2>&1
        運(yùn)行命令foo并把輸出到標(biāo)準(zhǔn)輸出文件和標(biāo)準(zhǔn)錯誤文件的內(nèi)容存貯到文件file1中。下面是用Perl實(shí)現(xiàn)這一功能的例子:
    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);
        運(yùn)行后,文件file1中的內(nèi)容為:
         line 2
         line 1
        可以看到,這兩行并未按我們想象的順序存貯,為什么呢?我們來分析一下這段程序。
        第3行重定向標(biāo)準(zhǔn)輸出文件,方法是打開文件file1將它與文件變量STDOUT關(guān)聯(lián),這也關(guān)閉了標(biāo)準(zhǔn)輸出文件。第4行重定向標(biāo)準(zhǔn)錯誤文件,參數(shù)>&STDOUT告訴Perl解釋器使用已打開并與STDOUT關(guān)聯(lián)的文件,即文件變量STDERR指向與STDOUT相同的文件。第5、6行分別向STDOUT和STDERR寫入數(shù)據(jù),因?yàn)檫@兩個文件變量指向同一個文件,故兩行字符串均寫到文件file1中,但順序卻是錯誤的,怎么回事呢?
        問題在于UNIX對輸出的處理上。當(dāng)使用print(或其它函數(shù))寫入STDOUT等文件時,UNIX操作系統(tǒng)真正所做的是把數(shù)據(jù)拷貝到一片特殊的內(nèi)存即緩沖區(qū)中,接下來的輸出操作繼續(xù)寫入緩沖區(qū)直到寫滿,當(dāng)緩沖區(qū)滿了,就把全部數(shù)據(jù)實(shí)際輸出。象這樣先寫入緩沖區(qū)再把整個緩沖區(qū)的內(nèi)容輸出比每次都實(shí)際輸出所花費(fèi)的時間要少得多,因?yàn)橐话銇碚f,I/O比內(nèi)存操作慢得多。
        程序結(jié)束時,任何非空的緩沖區(qū)都被輸出,然而,系統(tǒng)為STDOUT和STDERR分別維護(hù)一片緩沖區(qū),并且先輸出STDERR的內(nèi)容,因此存貯在STDERR的緩沖區(qū)中的內(nèi)容line 2出現(xiàn)在存貯在STDOUT的緩沖區(qū)中的內(nèi)容line 1之前。
        為了解決這個問題,可以告訴Perl解釋器不對文件使用緩沖,方法為:
         1、用select函數(shù)選擇文件
         2、把值1賦給系統(tǒng)變量$|
        系統(tǒng)變量$|指定文件是否進(jìn)行緩沖而不管其是否應(yīng)該使用緩沖。如果$|為非零值則不使用緩沖。$|與系統(tǒng)變量$~和$^協(xié)同工作,當(dāng)未調(diào)用select函數(shù)時,$|影響當(dāng)前缺省文件。下例保證了輸出的次序:
    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);
        程序運(yùn)行后,文件file1中內(nèi)容為:
         line 1
         line 2
        第5行將$|賦成1,告訴Perl解釋器當(dāng)前缺省文件不進(jìn)行緩沖,因?yàn)槲凑{(diào)用select,當(dāng)前的缺省文件為重定向到文件file1的STDOUT。第6行將當(dāng)前缺省文件設(shè)為STDERR,第7行又設(shè)置$|為1,關(guān)掉了重定向到file1的標(biāo)準(zhǔn)錯誤文件的緩沖。由于STDOUT和STDERR的緩沖均被關(guān)掉,向其的輸出立刻被寫到文件中,因此line 1出現(xiàn)在第一行。
    4)指定讀寫權(quán)限
        打開一個既可讀又可寫的文件方法是在文件名前加上"+>",如下:
         open (READWRITE, "+>file1");
        此語句打開既可讀又可寫的文件file1,即可以重寫其中的內(nèi)容。文件讀寫操作最好與庫函數(shù)seek和tell一起使用,這樣可以跳到文件任何一點(diǎn)。
        注:也可用前綴"+<"指定可讀寫權(quán)限。
    5)close函數(shù)
        用于關(guān)閉打開的文件。當(dāng)用close關(guān)閉管道,即重定向的命令時,程序等待重定向的命令結(jié)束,如:
         open (MYPIPE, "cat file*|");
         close (MYPIPE);
        當(dāng)關(guān)閉此文件變量時,程序暫停運(yùn)行,直到命令cat file*運(yùn)行完畢。
    6)print, printf和write函數(shù)
        print是這三個函數(shù)中最簡單的,它向指定的文件輸出,如果未指定,則輸出到當(dāng)前缺省文件中,如:
         print ("Hello, there!\n");
         print OUTFILE ("Hello, there!\n");
        第一句輸出到當(dāng)前缺省文件中,若未調(diào)用select,則為STDOUT。第二句輸出到由文件變量OUTFILE指定的文件中。
        printf函數(shù)先格式化字符串再輸出到指定文件或當(dāng)前缺省文件中,如:
         printf OUTFILE (“You owe me %8.2f", $owing);
        此語句取出變量$owing的值并替換掉串中的%8.2f,%8.2f是域格式的例子,把$owing的值看作浮點(diǎn)數(shù)。
        write函數(shù)使用輸出格式把信息輸出到文件中,如:
         select (OUTFILE);
         $~ = "MYFORMAT";
         write;
        關(guān)于printf和write,詳見《第x章 格式化輸出》。
    7)select函數(shù)
        select函數(shù)將通過參數(shù)傳遞的文件變量指定為新的當(dāng)前缺省文件,如:
         select (MYFILE);
        這樣,MYFILE就成了當(dāng)前缺省文件,當(dāng)對print、write和printf的調(diào)用未指定文件時,就輸出到MYFILE中。
    8)eof函數(shù)
        eof函數(shù)查看最后一次讀文件操作是否為文件最后一個記錄,如果是,則返回非零值,如果文件還有內(nèi)容,返回零。
        一般情況下,對eof的調(diào)用不加括號,因?yàn)閑of和eof()是等效的,但與<>操作符一起使用時,eof和eof()就不同了。現(xiàn)在我們來創(chuàng)建兩個文件,分別叫做file1和file2。file1的內(nèi)容為:
         This is a line from the first file.
         Here is the last line of the first file.
        file2的內(nèi)容為:
         This is a line from the second and last file.
         Here is the last line of the last file.
        下面就來看一下eof和eof()的區(qū)別,第一個程序?yàn)椋?br>
    1: #!/usr/local/bin/perl
    2:
    3: while ($line = <>) {
    4:   print ($line);
    5:   if (eof) {
    6:     print ("-- end of current file --\n");
    7:   }
    8: }
        運(yùn)行結(jié)果如下:
    $ 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 --
    $
        下面把eof改為eof(),第二個程序?yàn)椋?br>
    1: #!/usr/local/bin/perl
    2:
    3: while ($line = <>) {
    4:   print ($line);
    5:   if (eof()) {
    6:     print ("-- end of output --\n");
    7:   }
    8: }
        運(yùn)行結(jié)果如下:
    $ 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 --$
        這時,只有所有文件都讀過了,eof()才返回真,如果只是多個文件中前幾個的末尾,返回值為假,因?yàn)檫有要讀取的輸入。
    9)間接文件變量
        對于上述各函數(shù)open, close, print, printf, write, select和eof,都可以用簡單變量來代替文件變量,這時,簡單變量中所存貯的字符串就被看作文件變量名,下面就是這樣一個例子,此例很簡單,就不解釋了。需要指出的是,函數(shù)open, close, write, select和eof還允許用表達(dá)式來替代文件變量,表達(dá)式的值必須是字符串,被用作文件變量名。
    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、跳過和重讀數(shù)據(jù)

    函數(shù)名 seek
    調(diào)用語法 seek (filevar, distance, relative_to);
    解說 在文件中向前/后移動,有三個參數(shù):
    1、filevar,文件變量
    2、distance,移動的字節(jié)數(shù),正數(shù)向前移動,負(fù)數(shù)往回移動
    3、reletive_to,值可為0、1或2。為0時,從文件頭開始移動,為1時,相對于當(dāng)前位置(將要讀的下一行)移動,為2時,相對于文件末尾移動。
    運(yùn)行成功返回真(非零值),失敗則返回零,常與tell函數(shù)合用。

    函數(shù)名 tell
    調(diào)用語法 tell (filevar);
    解說 返回從文件頭到當(dāng)前位置的距離。
    注意:
    1、seek和tell不能用于指向管道的文件變量。
    2、seek和tell中文件變量參數(shù)可使用表達(dá)式。

    3、系統(tǒng)讀寫函數(shù)

    函數(shù)名 read
    調(diào)用語法 read (filevar, result, length, skipval);
    解說 read函數(shù)設(shè)計得與UNIX的fread函數(shù)等效,可以讀取任意長度的字符(字節(jié))存入一個簡單變量。其參數(shù)有四個:
    1、filevar:文件變量
    2、result:存貯結(jié)果的簡單變量(或數(shù)組元素)
    3、length:讀取的字節(jié)數(shù)
    4、skipval:可選項,指定讀文件之前跳過的字節(jié)數(shù)。
    返回值為實(shí)際讀取的字節(jié)數(shù),如果已到了文件末尾,則返回零,如果出錯,則返回空串。

    函數(shù)名 sysread
    調(diào)用語法 sysread (filevar, result, length, skipval);
    解說 更快的讀取數(shù)據(jù),與UNIX函數(shù)read等效,參數(shù)與read相同。

    函數(shù)名 syswrite
    調(diào)用語法 syswrite (filevar, data, length, skipval);
    解說 更快的寫入數(shù)據(jù),與UNIX函數(shù)write等效,參數(shù):
    1、filevar:將要寫入的文件
    2、data:存貯要寫入數(shù)據(jù)的變量
    3、length:要寫入的字節(jié)數(shù)
    4、skipval寫操作之前跳過的字節(jié)數(shù)。

    4、用getc讀取字符

    函數(shù)名 getc
    調(diào)用語法 $char = getc (infile);
    解說 從文件中讀取單個字符。

    5、用binmode讀取二進(jìn)制文件

    函數(shù)名 binmode
    調(diào)用語法 binmode (filevar);
    解說 當(dāng)你的系統(tǒng)(如類DOS系統(tǒng))對文本文件和二進(jìn)制文件有所區(qū)別時使用。必須在打開文件后、讀取文件前使用。

    二、目錄處理函數(shù)

    函數(shù)名 mkdir
    調(diào)用語法 mkdir (dirname, permissions);
    解說 創(chuàng)建新目錄,參數(shù)為:
    1、dirname:將要創(chuàng)建的目錄名,可以為字符串或表達(dá)式
    2、permissions:8進(jìn)制數(shù),指定目錄的訪問權(quán)限,其值和意義見下表,權(quán)限的組合方法為將相應(yīng)的值相加。

    權(quán)限
    4000   運(yùn)行時設(shè)置用戶ID  
    2000 運(yùn)行時設(shè)置組ID
    1000 粘貼位
    0400 擁有者讀權(quán)限
    0200 擁有者寫權(quán)限
    0100 擁有者執(zhí)行權(quán)限
    0040 組讀權(quán)限
    0020 組寫權(quán)限
    0010 組執(zhí)行權(quán)限
    0004 所有人讀權(quán)限
    0002 所有人寫權(quán)限
    0001 所有人執(zhí)行權(quán)限

    函數(shù)名 chdir
    調(diào)用語法 chdir (dirname);
    解說 改變當(dāng)前工作目錄。參數(shù)dirname可以為字符串,也可以為表達(dá)式。

    函數(shù)名 opendir
    調(diào)用語法 opendir (dirvar, dirname);
    解說 打開目錄,與下面幾個函數(shù)合用,可查看某目錄中文件列表。參數(shù)為:
    1、dirvar:目錄變量,與文件變量類似
    2、dirname:目錄名,可為字符串或表達(dá)式
    成功返回真值,失敗返回假。
    注:程序中可用同名的目錄變量和文件變量,根據(jù)環(huán)境確定取成分。

    函數(shù)名 closedir
    調(diào)用語法 closedir (mydir);
    解說 關(guān)閉打開的目錄。

    函數(shù)名 readdir
    調(diào)用語法 readdir (mydir);
    解說 賦給簡單變量時,每次賦予一個文件或子目錄名,對數(shù)組則賦予全部文件和子目錄名。

    函數(shù)名 telldir
    調(diào)用語法 location = telldir (mydir);
    解說 象在文件中前后移動一樣,telldir和下面的seekdir用于在目錄列表中前后移動。

    函數(shù)名 seekdir
    調(diào)用語法 seekdir(mydir, location);
    解說 location必須為telldir返回的值。

    函數(shù)名 rewinddir
    調(diào)用語法 rewinddir (mydir);
    解說 將讀取目錄的位置重置回開頭,從而可以重讀目錄列表。

    函數(shù)名 rmdir
    調(diào)用語法 rmdir (dirname);
    解說 刪除空目錄。成功則返回真(非零值),失敗返回假(零值)。

    三、文件屬性函數(shù)
    1、文件重定位函數(shù)

    函數(shù)名 rename
    調(diào)用語法 rename (oldname, newname);
    解說 改變文件名或移動到另一個目錄中,參數(shù)可為字符串或表達(dá)式。

    函數(shù)名 unlink
    調(diào)用語法 num = unlink (filelist);
    解說 刪除文件。參數(shù)為文件名列表,返回值為實(shí)際刪除的文件數(shù)目。
    此函數(shù)之所以叫unlink而不叫delete是因?yàn)樗鼘?shí)際所做的是刪除文件的鏈接。

    2、鏈接和符號鏈接函數(shù)

    函數(shù)名 link
    調(diào)用語法 link (newlink, file);
    解說 創(chuàng)建現(xiàn)有文件的鏈接--硬鏈接,file是被鏈接的文件,newlink是被創(chuàng)建的鏈接。
    成功返回真,失敗返回假。
    當(dāng)刪除這兩個鏈接中的一個時,還可以用另一個來訪問該文件。

    函數(shù)名 symlink
    調(diào)用語法 symlink (newlink, file);
    解說 創(chuàng)建現(xiàn)有文件的符號鏈接,即指向文件名,而不是指向文件本身。參數(shù)和返回值同上。
    當(dāng)原文件被刪除(如:被unlinke函數(shù)刪除),則被創(chuàng)建鏈接不可用,除非再創(chuàng)建一個與原被鏈接的文件同名的文件。

    函數(shù)名 readlink
    調(diào)用語法 filename = readlink (linkname);
    解說 如果linkname為符號鏈接文件,返回其實(shí)際指向的文件。否則返回空串。

    3、文件許可權(quán)函數(shù)

    函數(shù)名 chmod
    調(diào)用語法 chmod (permissions, filelist);
    解說 改變文件的訪問權(quán)限。參數(shù)為:
    1、permissions為將要設(shè)置的權(quán)限,其含義見上述mkdir中權(quán)限表
    2、filelist為欲改變權(quán)限的文件列表

    函數(shù)名 chown
    調(diào)用語法 chown (userid, groupid, filelist);
    解說 改變文件的屬主,有三個參數(shù):
    1、userid:新屬主的(數(shù)字)ID號
    2、groupid:新的組(數(shù)字)ID號,-1為保留原組
    3、filelist:欲改變屬主的文件列表

    函數(shù)名 umask
    調(diào)用語法 oldmaskval = umask (maskval);
    解說 設(shè)置文件訪問權(quán)限掩碼,返回值為當(dāng)前掩碼。

    4、其它屬性函數(shù)

    函數(shù)名 truncate
    調(diào)用語法 truncate (filename, length);
    解說 將文件的長度減少到length字節(jié)。如果文件長度已經(jīng)小于length,則不做任何事。其中filename可以為文件名,也可以為文件變量

    函數(shù)名 stat
    調(diào)用語法 stat (file);
    解說 獲取文件狀態(tài)。參數(shù)file可為文件名也可為文件變量。返回列表元素依次為:
  • 文件所在設(shè)備
  • 內(nèi)部參考號(inode)
  • 訪問權(quán)限
  • 硬鏈接數(shù)
  • 屬主的(數(shù)字)ID
  • 所屬組的(數(shù)字)ID
  • 設(shè)備類型(如果file是設(shè)備的話)
  • 文件大。ㄗ止(jié)數(shù))
  • 最后訪問時間
  • 最后修改時間
  • 最后改變狀態(tài)時間
  • I/O操作最佳塊大小
  • 分配給該文件的塊數(shù)
  • 函數(shù)名 lstat
    調(diào)用語法 lstat (file);
    解說 與stat類似,區(qū)別是將file看作是符號鏈接。

    函數(shù)名 time
    調(diào)用語法 currtime = time();
    解說 返回從1970年1月1日起累計秒數(shù)。

    函數(shù)名 gmtime
    調(diào)用語法 timelist = gmtime (timeval);
    解說 將由time, stat 或 -A 和 -M 文件測試操作符返回的時間轉(zhuǎn)換成格林威治時間。返回列表元素依次為:
  • 分鐘
  • 小時,0~23
  • 日期
  • 月份,0~11(一月~十二月)
  • 年份
  • 星期,0~6(周日~周六)
  • 一年中的日期,0~364
  • 是否夏令時的標(biāo)志

  • 詳見UNIX的gmtime幫助。

    函數(shù)名 localtime
    調(diào)用語法 timelist = localtime (timeval);
    解說 與gmtime類似,區(qū)別為將時間值轉(zhuǎn)換為本地時間。

    函數(shù)名 utime
    調(diào)用語法 utime (acctime, modtime, filelist);
    解說 改變文件的最后訪問時間和最后更改時間。例如:
    $acctime = -A "file1";
    $modtime = -M "file1";
    @filelist = ("file2", "file3");
    utime ($acctime, $modtime, @filelist);

    函數(shù)名 fileno
    調(diào)用語法 filedesc = fileno (filevar);
    解說 返回文件的內(nèi)部UNIX文件描述。參數(shù)filevar為文件變量。

    函數(shù)名 fcntl
    flock
    調(diào)用語法 fcntl (filevar, fcntlrtn, value);
    flock (filevar, flockop);
    解說 詳見同名UNIX函數(shù)幫助。

    四、使用DBM文件
       Perl中可用關(guān)聯(lián)數(shù)組來訪問DBM文件,所用函數(shù)為dbmopen和dbmclose,在Perl5中,已用tie和untie代替。

    函數(shù)名 dbmopen
    調(diào)用語法 dbmopen (array, dbmfilename, permissions);
    解說 將關(guān)聯(lián)數(shù)組與DBM文件相關(guān)聯(lián)。參數(shù)為:
    1、array:所用關(guān)聯(lián)數(shù)組
    2、dbmfilename:將打開的DBM文件名
    3、訪問權(quán)限,詳見mkdir

    函數(shù)名 dbmclose
    調(diào)用語法 dbmclose (array);
    解說 關(guān)閉DBM文件,拆除關(guān)聯(lián)數(shù)組與之的關(guān)系。



    上一章 下一章 目錄

    宣恩县| 仁布县| 新巴尔虎右旗| 电白县| 延边| 湖南省| 石柱| 秭归县| 南城县| 图们市| 洛扎县| 沅江市| 福州市| 台南市| 台州市| 海淀区| 蓝田县| 洪雅县| 海兴县| 易门县| 西藏| 秭归县| 隆尧县| 武强县| 赞皇县| 齐河县| 军事| 汕尾市| 藁城市| 津南区| 中卫市| 清新县| 阜新| 峡江县| 资兴市| 江安县| 逊克县| 若羌县| 兴安盟| 正安县| 雷波县|