⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 perl11.htm

📁 一个教你学Perl语言的中文教程
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<a name="1.1.9">9)间接文件变量</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;对于上述各函数open, close, print, printf, write, select和eof,都可以用简单变量来代替文件变量,这时,简单变量中所存贮的字符串就被看作文件变量名,下面就是这样一个例子,此例很简单,就不解释了。需要指出的是,函数open, close, write, select和eof还允许用表达式来替代文件变量,表达式的值必须是字符串,被用作文件变量名。<br>
<blockquote>
1:  #!/usr/local/bin/perl<br>
2:  <br>
3:  &amp;open_file("INFILE", "", "file1");<br>
4:  &amp;open_file("OUTFILE", "&gt;", "file2");<br>
5:  while ($line = &amp;read_from_file("INFILE")) {<br>
6:  &nbsp;  &amp;print_to_file("OUTFILE", $line);<br>
7:  }<br>
8:  <br>
9:  sub open_file {<br>
10: &nbsp;  local ($filevar, $filemode, $filename) = @_;<br>
11: <br>
12: &nbsp;  open ($filevar, $filemode . $filename) ||<br>
13: &nbsp; &nbsp;   die ("Can't open $filename");<br>
14: }<br>
15: sub read_from_file {<br>
16: &nbsp;  local ($filevar) = @_;<br>
17: <br>
18: &nbsp;  &lt;$filevar&gt;;<br>
19: }<br>
20: sub print_to_file {<br>
21: &nbsp;  local ($filevar, $line) = @_;<br>
22: <br>
23: &nbsp;  print $filevar ($line);<br>
24: }
</blockquote>
<a name="1.2">2、跳过和重读数据</a><br>
<p><table border="1" cellspacing="1">
    <tr>
        <td>函数名</td>
        <td>seek</td>
    </tr>
    <tr>
        <td>调用语法</td>
        <td>seek (filevar, distance, relative_to);</td>
    </tr>
    <tr>
        <td>解说</td>
<td>在文件中向前/后移动,有三个参数:<br>1、filevar,文件变量<br>2、distance,移动的字节数,正数向前移动,负数往回移动<br>3、reletive_to,值可为0、1或2。为0时,从文件头开始移动,为1时,相对于当前位置(将要读的下一行)移动,为2时,相对于文件末尾移动。<br>运行成功返回真(非零值),失败则返回零,常与tell函数合用。</td>
    </tr>
</table></p>
<p><table border="1" cellspacing="1">
    <tr>
        <td>函数名</td>
        <td>tell</td>
    </tr>
    <tr>
        <td>调用语法</td>
        <td>tell (filevar);</td>
    </tr>
    <tr>
        <td>解说</td>
	<td>返回从文件头到当前位置的距离。<br>注意:<br>1、seek和tell不能用于指向管道的文件变量。<br>2、seek和tell中文件变量参数可使用表达式。</td>
    </tr>
</table></p>
<a name="1.3">3、系统读写函数</a><br>
<p><table border="1" cellspacing="1">
    <tr>
        <td>函数名</td>
        <td>read</td>
    </tr>
    <tr>
        <td>调用语法</td>
        <td>read (filevar, result, length, skipval);</td>
    </tr>
    <tr>
        <td>解说</td>
	<td>read函数设计得与UNIX的fread函数等效,可以读取任意长度的字符(字节)存入一个简单变量。其参数有四个:<br>1、filevar:文件变量<br>2、result:存贮结果的简单变量(或数组元素)<br>3、length:读取的字节数<br>4、skipval:可选项,指定读文件之前跳过的字节数。<br>返回值为实际读取的字节数,如果已到了文件末尾,则返回零,如果出错,则返回空串。</td>
    </tr>
</table></p>
<p><table border="1" cellspacing="1">
    <tr>
        <td>函数名</td>
        <td>sysread</td>
    </tr>
    <tr>
        <td>调用语法</td>
        <td>sysread (filevar, result, length, skipval);</td>
    </tr>
    <tr>
        <td>解说</td>
	<td>更快的读取数据,与UNIX函数read等效,参数与read相同。</td>
    </tr>
</table></p>
<p><table border="1" cellspacing="1">
    <tr>
        <td>函数名</td>
        <td>syswrite</td>
    </tr>
    <tr>
        <td>调用语法</td>
        <td>syswrite (filevar, data, length, skipval);</td>
    </tr>
    <tr>
        <td>解说</td>
	<td>更快的写入数据,与UNIX函数write等效,参数:<br>1、filevar:将要写入的文件<br>2、data:存贮要写入数据的变量<br>3、length:要写入的字节数<br>4、skipval写操作之前跳过的字节数。</td>
    </tr>
</table></p>
<a name="1.4">4、用getc读取字符</a><br>
<p><table border="1" cellspacing="1">
    <tr>
        <td>函数名</td>
        <td>getc</td>
    </tr>
    <tr>
        <td>调用语法</td>
        <td>$char = getc (infile);</td>
    </tr>
    <tr>
        <td>解说</td>
	<td>从文件中读取单个字符。</td>
    </tr>
</table></p>
<a name="1.5">5、用binmode读取二进制文件</a><br>
<p><table border="1" cellspacing="1">
    <tr>
        <td>函数名</td>
        <td>binmode</td>
    </tr>
    <tr>
        <td>调用语法</td>
        <td>binmode (filevar);</td>
    </tr>
    <tr>
        <td>解说</td>
	<td>当你的系统(如类DOS系统)对文本文件和二进制文件有所区别时使用。必须在打开文件后、读取文件前使用。</td>
    </tr>
</table></p>
<a name="2">二、目录处理函数
<p><table border="1" cellspacing="1">
    <tr>
        <td>函数名</td>
        <td><a name="2.1">mkdir</a></td>
    </tr>
    <tr>
        <td>调用语法</td>
        <td>mkdir (dirname, permissions);</td>
    </tr>
    <tr>
        <td>解说</td>
	<td>创建新目录,参数为:<br>1、dirname:将要创建的目录名,可以为字符串或表达式<br>2、permissions:8进制数,指定目录的访问权限,其值和意义见下表,权限的组合方法为将相应的值相加。</td>
    </tr>
</table></p>
<p><table border="1" cellspacing="1">
    <tr>
        <td>值</td>
        <td>权限</td>
    </tr>
    <tr>
        <td>4000 &nbsp; </td>
        <td>运行时设置用户ID &nbsp; </td>
    </tr>
    <tr>
        <td>2000</td>
        <td>运行时设置组ID</td>
    </tr>
    <tr>
        <td>1000</td>
        <td>粘贴位</td>
    </tr>
    <tr>
        <td>0400</td>
        <td>拥有者读权限</td>
    </tr>
    <tr>
        <td>0200</td>
        <td>拥有者写权限</td>
    </tr>
    <tr>
        <td>0100</td>
        <td>拥有者执行权限</td>
    </tr>
    <tr>
        <td>0040</td>
        <td>组读权限</td>
    </tr>
    <tr>
        <td>0020</td>
        <td>组写权限</td>
    </tr>
    <tr>
        <td>0010</td>
        <td>组执行权限</td>
    </tr>
    <tr>
        <td>0004</td>
        <td>所有人读权限</td>
    </tr>
    <tr>
        <td>0002</td>
        <td>所有人写权限</td>
    </tr>
    <tr>
        <td>0001</td>
        <td>所有人执行权限</td>
    </tr>
</table></p>
<p><table border="1" cellspacing="1">
    <tr>
        <td>函数名</td>
        <td><a name="2.2">chdir</a></td>
    </tr>
    <tr>
        <td>调用语法</td>
        <td>chdir (dirname);</td>
    </tr>
    <tr>
        <td>解说</td>
	<td>改变当前工作目录。参数dirname可以为字符串,也可以为表达式。</td>
    </tr>
</table></p>
<p><table border="1" cellspacing="1">
    <tr>
        <td>函数名</td>
        <td><a name="2.3">opendir</a></td>
    </tr>
    <tr>
        <td>调用语法</td>
        <td>opendir (dirvar, dirname);</td>
    </tr>
    <tr>
        <td>解说</td>
	<td>打开目录,与下面几个函数合用,可查看某目录中文件列表。参数为:<br>1、dirvar:目录变量,与文件变量类似<br>2、dirname:目录名,可为字符串或表达式<br>成功返回真值,失败返回假。<br>注:程序中可用同名的目录变量和文件变量,根据环境确定取成分。</td>
    </tr>
</table></p>
<p><table border="1" cellspacing="1">
    <tr>
        <td>函数名</td>
        <td><a name="2.4">closedir</a></td>
    </tr>
    <tr>
        <td>调用语法</td>
        <td>closedir (mydir);</td>
    </tr>
    <tr>
        <td>解说</td>
	<td>关闭打开的目录。</td>
    </tr>
</table></p>
<p><table border="1" cellspacing="1">
    <tr>
        <td>函数名</td>
        <td><a name="2.5">readdir</a></td>
    </tr>
    <tr>
        <td>调用语法</td>
        <td>readdir (mydir);</td>
    </tr>
    <tr>
        <td>解说</td>
	<td>赋给简单变量时,每次赋予一个文件或子目录名,对数组则赋予全部文件和子目录名。</td>
    </tr>
</table></p>
<p><table border="1" cellspacing="1">
    <tr>
        <td>函数名</td>
        <td><a name="2.6">telldir</a></td>
    </tr>
    <tr>
        <td>调用语法</td>
        <td>location = telldir (mydir);</td>
    </tr>
    <tr>
        <td>解说</td>
	<td>象在文件中前后移动一样,telldir和下面的seekdir用于在目录列表中前后移动。</td>
    </tr>
</table></p>
<p><table border="1" cellspacing="1">
    <tr>
        <td>函数名</td>
        <td><a name="2.7">seekdir</a></td>
    </tr>
    <tr>
        <td>调用语法</td>
        <td>seekdir(mydir, location);</td>
    </tr>
    <tr>
        <td>解说</td>
	<td>location必须为telldir返回的值。</td>
    </tr>
</table></p>
<p><table border="1" cellspacing="1">
    <tr>
        <td>函数名</td>
        <td><a name="2.8">rewinddir</a></td>
    </tr>
    <tr>
        <td>调用语法</td>
        <td>rewinddir (mydir);</td>
    </tr>
    <tr>
        <td>解说</td>
	<td>将读取目录的位置重置回开头,从而可以重读目录列表。</td>
    </tr>
</table></p>
<p><table border="1" cellspacing="1">
    <tr>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -