首页 > 编程知识 正文

连续两个scanf怎么输入,perl格式化输出

时间:2023-05-05 16:01:42 阅读:119463 作者:1485

文件句柄

1 )“文件句柄”用于“应对”要操作的“文件系统中的文件”,“不严格”“第一个”绑定要打开的文件句柄(打开文件句柄“后续操作中也通过文件句柄操作相应的文件- -“操作”“最后”关闭文件句柄- -“关闭”“更容易理解”将“文件句柄”改为“Linux上的两者“不同”,Perl的文件句柄'分层为“Linux上的标准IO流 Perl上的“特殊”STDIN、STDOUT、STDERR是Perl上的“预定义文件句柄” 标准错误表示 Linux上的它们是“默认”文件描述符“FD”的这些文件描述符分别是“对应于文件系统”的“/dev/STDIN”、“/dev/STDOUT” stderr设备文件总结: Linux上perl的“文件句柄”stdin、stdout、STDERR stderr '总结:将“文件句柄”视为通道: perl程序中的例如,print语句经由“特定信道”将数据输出到“对应文件”

Perl的文件句柄

文件句柄:“Perl”进程与外部之间的“I/O”联系的名称是“此关系”的名称。 ' 非文件名称的Perl保留的' 6个'特殊文件句柄: STDIN、STOUT、STDEER、DATA、ARGV、ARGVOUT '标准输入流'标准输入流: Perl程序启动时,显示“ “Perl进程”与其“输入源”的联系默认输入源(用户的“键盘输入”其他输入源)“文件输入”或“通过管道读取到其他程序”的输出)标准输出流其他程序'备注:所有标准流都来自' Unix标准I/O '库函数的强调。' 请不要使用保留的'文件句柄。 文件句柄“全大写”(1)使用Perl 默认上的裸句柄

裸控点- -类似于stdin或自订裸字空钻石操作。 缺省情况下,使用在“命令行”中指定的“从所有文件读取”、“如果未指定”和“从stdin读取”(2)自定义的裸文件句柄

)3)使用变量代替文件句柄

“标量变量中的文件句柄”的特点:从“Perl'5.6”开始,可以“在标量变量中存储文件句柄”、“不使用裸字”的优点:“子程序参数、“数组”、哈哈控制它的“范围”--“变量角度”1的裸机句柄为“包变量”,“整个文件”有效2 )变量方式的文件句柄仅在“代码块范围内”有效,出现自己的范围后为“失效”

打开文件句柄

1 )使用“打开函数”2 )打开文件句柄。 要明确“打开文件句柄的目的”,请选择“读取”、“写入”、“添加写入”---这是“操作模式”3。 对于open文件,需要“指定操作模式”。 此外,还指定“关联”

1 )双参数格式

特点:“图案符号”和“目标文件”放在一起,两者“有空间”的open LOG1,“/tmp/a.log”; open LOG1,'/tmp/a.log '; 解密:打开文件句柄日志。 该文件句柄“对应的文件”为/tmp/a.log,“操作模式”为写入2 )的3参数格式

语法: open '句柄' '操作模式' '文件名' open LOG1,','/tmp/a.log '; 文件/tmp/a.logopen LOG2,','/tmp/a.log '; 文件/tmp/a.log --“等效”shell中的“附加重定向”open LOG3、“、”、“/tmp/a.log”; 打开/tmp/a.log文件,然后单击“输入源”open LOG4,“/tmp/a.log”; 等效于上述输入,“默认模式”为“输入”场景

:'5.6版本'之后,'推荐'使用该种模式

3)附加参数

功能: 指明'输入'、'输出'的文件编码,则使用':'将"操作模式和编码方式"分割open LOG1,">:encoding(UTF-8)","/tmp/a.log"; 以'UTF-8编码方式写入'数据open LOG1,"<:encoding(UTF-8)","/tmp/a.log"; 以'UTF-8编码方式读入'数据场景: '中文乱码',最好指定简写: open LOG1,"<:utf-8","/tmp/a.log"; --> 不会考虑输入或输出的数据'是否是合法'的UTF-8字符串+++++++++++'查看perl能理解和处理的字符编码清单'+++++++++++

4)处理有问题的文件句柄

明确: perl自身是'无法打开'外部文件的,它需要'请求操作系统内核',让操作系统来打开文件因此: 打开文件正确、错误时,'操作系统'都会有相应的'回馈信息'对于perl来说,'open函数的返回值'就表示正确、错误打开文件++++++++++++需求:'判断是否正确打开'++++++++++++场景一:通过'open函数返回值'判断my $success = open LOG,">","/tmp/a.log";if(!success){ exit 1; 'open操作失败'}​场景二:最佳'实践'open LOG,">","/tmp/a.log" or die "open file wrong: $!";备注: 在'字符串上下文'中,'$!'返回来的是'操作系统'的相应的'出错'消息 --> 使用"$!"可以引用操作系统向perl报告的错误附加: die 对应的字符串'加上换行符'就'不会'显示'程序名和行号'++++++++++++++'use autodie'++++++++++++++备注: '5.10之后'的版本,如果'open失败',会'自动启动die',不用手动指定了

四    关闭文件句柄 

++++++++++++++'文件句柄关闭问题'++++++++++++++1)一般来说:打开了文件句柄后,在'操作完成后'要及时'关闭文件句柄'以便'节省'操作系统"打开文件数量限制"的资源关闭句柄'过程':操作系统会将'存在于内存中','尚未写入'的数据'写到磁盘'2)perl比较'智能':会在某些时候'自动'帮我们'关掉'文件句柄3)当'打开'一个文件句柄后,'再'去'打开这个文件句柄'时,perl'会先关闭'这个文件句柄'再打开这个'文件句柄,这称为"文件句柄的reopen"-->类似'nginx的reopen'特点:它只是'隐式地'关闭并重新打开,perl并'不认为'中间涉及了关闭操作 -->例如'reopen时行号'不会重置备注:关闭文件句柄'错误'也可以通过'die'捕捉close LOG;

五   使用文件句柄

(1)读取文件数据

(2)写入数据到文件

备注: 在使用'print、say、printf'的时候,在这'几个关键字后'面接上'文件句柄'即表示本输出语句'写入到'此文件句柄中

'select'关键字自己选一个默认的'输出文件句柄' --> '了解即可'

六  报错处理

在程序中'处理中文等宽字符'时,perl'不能识别'要处理的内容

①  方式一

use utf8;binmode(STDIN, ':encoding(utf8)');binmode(STDOUT, ':encoding(utf8)');binmode(STDERR, ':encoding(utf8)');

②  方式二

use utf8;# 标准输入、输出、错误皆用utf-8编码格式进行编码 -->这里是'标准输入'use open ":encoding(utf-8)",":std";

参考博客

高级文件句柄模式

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。