位置: 编程技术 - 正文

Perl文件句柄详解(perl文件操作)

编辑:rootadmin

在文件I/O中,要从一个文件读取数据,应用程序首先要调用操作系统函数并传送文件名,并选一个到该文件的路径来打开文件。该函数取回一个顺序号,即Perl文件句柄(filehandle),该Perl文件句柄对于打开的文件是唯一的识别依据。要从文件中读取一块数据,应用程序需要调用函数ReadFile,并将Perl文件句柄在内存中的地址和要拷贝的字节数传送给操作系统。当完成任务后,在通过调用系统函数来关闭该文件。

除了你模仿唯我论者哲学家编写一个人工智能程序,你的程序使用不和外界通讯的方法。在班级例子中的第三和四行,你将看到"GRADES",这是引用另一个Perl文件的数据类型,称为据柄(filehandle)。一个句柄就是你给一个文件,设备,管套(socket)或管道的一个名字,以便帮助你记住你正处理的名字,并隐藏某些缓存等的复杂性。(在内部,句柄类似C++语言的流(streams),或BASIC中的I/O通道)句柄使你从不同的地方输入和输出给不同的地方都较容易。使Perl成为好语言的一个原因是它能和多个文件通讯并一次处理他们。对外部对象有好的符号名字是一个好语言的一个组成部分[1]。

其他使Perl是一个好语言的是:它是8位的,是可嵌入的,你能通过扩展模式在Perl中嵌入其他程序。它是简明的,网络上容易使用。环境上是清楚的,容易对话。你能以许多不同的方法引用它(就象前面看到的)。总之,语言本身不是如此严格的结构,以至于你不能使它超出你的问题。又回到TMTOWTDI。

你创建一个句柄,并通过open函数把它和一个文件联结。open有两个参数:句柄和你想与它联结的一个文件名。Perl也给出一些预定义(和预打开的)句柄。STDIN是你程序的正常输入通道,而STDOUT是你程序的正常输出的通道。STDERR是一个附加的输出通道,以便当把输入转为输出时,程序能给出一些说明[2]。

一般地,这些句柄和你的终端联结,所以你能输入你的程序并能看到,但他们也可以和文件联结。Perl能给你这些预定义句柄,因为你的操作系统已提供这些。在UNIX下,进程从他的父进程(一般是一个shell)继承标准输入,输出和错误。一个shell的责任之一是建立这些I/O流,以便子进程不必考虑这些)。既然你能为各种目的(输入,输出,管道)使用open函数创建句柄,你就必须能指明你要做什么。就象在UNIX命令行一样,你给文件名简单地加些字符。

就象你看到的,你可以任意选名字。一旦打开句柄SESAME,它就能被用于存取文件或管道,直到它被显式地关闭(用close(SESAME)),或对同一句柄的一系列open把这个句柄和另一文件联结[3]。

打开一个已打开的句柄是隐式地关闭第一个文件,使它对Perl文件句柄不可取,并打开一个不同的文件。你必须小心这是你真正想做的。有时,偶然碰巧,比如,当你open($handle,$file)时,$handle正好包含空串(null)。确认设置$handle为某个单一个量,否则你将对空句柄打开一个新的文件。一旦你已为输入打开一个句柄(或你使用STDIN),你就能使用"行读操作"<>,读一行。这个也以钻石操作闻名,因为它的形状。这个钻石操作包含你想读的句柄()[4]。使用STDID句柄读用户提供的答案,如下:

空钻石操作<>,将从命令行指定的所有文件读,如果没有指定,从STDIN读。(这是许多UNIX"过滤"程序的标准行为)

你明白我们给你的例子吗?在print语句中STDOUT做什么?这就是你使用一个输出句柄的方法之一。一个句柄可以作为print语句的第一个参数,如果存在,告诉往哪儿输出。在例子中,句柄是冗余的,因为输出已经是STDOUT。对于输入的缺省是STDIN,对于输出的缺省是STDOUT。(在班级例子的行,我们为避免使你混淆,我们省略了。)我们也有一件事使你不明白。如果你试上面的例子,你可以注意到你得到一个特别的空行。因为读时没有自动地从你的输入行中删除换行符(newline)(例如,你输入"9")。对于这些情况,当你想删除换行符时,Perl提供chop和chomp函数。chop将不加区别地删除(并返回)传给它的最后一个字符,而chomp只删除记录标识的末尾(一般地是""),并返回这样删除的字符数。

推荐整理分享Perl文件句柄详解(perl文件操作),希望有所帮助,仅作参考,欢迎阅读内容。

Perl文件句柄详解(perl文件操作)

文章相关热门搜索词:perl文件操作,perl常用命令,perl文件操作,perl文件操作,perl语言基本命令,perl文件操作,perl 文件句柄,perl语句,内容如对您有帮助,希望把文章链接给更多的朋友!

perl中srand()与time的函数使用方法介绍 在perl中srand()提供供rand()使用的随机数种子,rand()产生随机数生成器。如果在第一次调用rand()之前没有调用srand(),那么系统会为你自动调用srand()

用perl实现生物突变的随机模拟程序代码 程序文件:test.pl#!/bin/perl#filename:test.plusestrict;usewarnings;#随便找一个比较好识别的序列my$DNA="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAn";my$i;my$mutant;sr

perl 变量 $/ 的用法解析 上下文为行模式时,$/ 定义以什么来区分行 默认状态下,很显然都是用n来区分行,n也被我们称作为换行符。当读取序列时,按行来读取时,就是以换行符为标准。读取的strawberry1.gb的文件内容

标签: perl文件操作

本文链接地址:https://www.jiuchutong.com/biancheng/372549.html 转载请保留说明!

上一篇:构造函数中Perl方法用法介绍(构造函数中super()的作用)

下一篇:perl中srand()与time的函数使用方法介绍(perl date)

  • 企业所得税亏损弥补的规定
  • 印花税征税对象包括哪些
  • 季度利息分录
  • 注册资金证明包含哪些
  • 为什么社保账户有钱但是卡里没钱
  • 企业收到的投资者的超出其在企业
  • 可供出售金融资产是指什么
  • 股票投资收益是指投资者从购入股票开始到出售为止整
  • 化验室购买仪器计入什么科目
  • 支付以前年度的费用会计处理
  • 长期股权投资减值准备借贷方向
  • 公司用商标权作假违法吗
  • 资本公积提取比例怎么算
  • 含税进货价款怎么算
  • 开普票时开票码怎么开
  • 公司支付劳务派遣人员工资账务处理
  • 购入的汽车怎么入账
  • 购进原材料没有发票怎么办
  • 无租使用房产怎么缴纳房产税土地税
  • 企业收到损坏赔偿金
  • 企业会计准则规定我国企业的会计期间按年度划分
  • 招待客人买的烟计入业务招待费吗
  • 跨省增值税专用发票可以抵扣吗
  • 老板垫付款做会计分录
  • 建筑业销项税和进项税计算
  • mac老款设备怎样升级os14
  • linux中nano什么指令
  • window10 锁屏壁纸
  • 新车发生事故报废保险怎么赔付
  • php ftp功能
  • 电脑前面板耳机没声音怎么设置bios
  • echarts饼图背景图片
  • 收取逾期包装物押金怎么算税
  • 采用汇兑的方式归还前欠货款
  • 个体户文化事业建设费免征
  • 政府会计制度下财务会计包含几要素
  • php 并发 解决方案
  • vue发送post请求如何传两个参数
  • 会计分录怎么分借方和贷方
  • 子公司提取盈余公积 合并抵消
  • ie浏览器网页滚动条怎么隐藏
  • 华为云从入门到实战电子版
  • 红包生成算法
  • 微服务docker打包规范
  • 固定资产入账是税前还是税后
  • python国内下载地址
  • 出口退税转内销的损失
  • 出差发生的旅游事件
  • 印花税是按照开票金额还是当月收入
  • 没有发票的费用支出怎么入账
  • 接受母公司捐赠现金分录
  • 未达到起征点销售额写多少
  • 搬迁补偿款的会计分录
  • 个人所得税多计提怎样冲销
  • 营改增后建筑劳务分包开票一般几个点
  • 转让专利权的使用权
  • 零售行业会计分录怎么做
  • 私立学校增值税免税吗
  • 费用报销单和支付证明单的区别
  • 民办非企业可以开发票吗
  • sqlserver数据库恢复挂起状态
  • centos 怎么用
  • centos查看inode
  • win7系统鼠标右键无法弹出菜单
  • ssms.exe是什么进程
  • 快速查看浏览的英语短语
  • mac电脑卡死按哪三个键
  • linux 判断语句
  • win10系统如何更改盘符
  • 从五方面解析Linux防火墙框架问题
  • quick-cocos2d-x如何在mac下编译安卓版本
  • opengl glm库
  • bootstrap modal 位置
  • andengine学习,《android游戏开发实践指南》详解
  • 学javascript可以干什么工作
  • Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
  • python 字符串
  • 吉林省国税税务总局官网
  • 企业年金需要个人财产申报
  • 农产品核定管理办法最新
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设