Perl 语法 - 高级特性

总结:

q()、qq()、qw()、qx(),分别是单引号、双引号、创建字符串列表 和 捕获命令输出。

 

第9学时 其他函数和运算符


一件事情可以使用多种方法完成。

本节主要内容:

  1. 如何对标量进行简单的字符串搜索?(之前用正则表达式)
  2. 如何进行字符替换?
  3. 如何使用print函数
  4. 如何将数组用作堆栈和队列

 

第10学时 文件与目录


  • 获得目录列表
  • 创建和删除文件
  • 创建和删除目录
  • 获取文件信息

如何获得目录列表?(打开目录 读取目录) 此步的局限性:只能查看指定目录下的文件目录列表信息

打开文件 和 打开目录 不太一样,打开目录 是为了获得目录里的信息列表,而不能写入或修改。

# 打开目录
opendir(DIR, ‘./‘) or die $!;
# 以标量形式读取目录
while(readdir(DIR)){
    print $_."\n";
}
# 以数组形式读取目录
@dir = readdir(DIR);
foreach (@dir){
    print $_."\n";
}
# 目录句柄用完之后必须关闭
close(DIR);
# 通常会用grep过滤掉(.)和(..)目录
@files = grep(!/^\.\.?$/, readdir(DIR));

 

如何浏览目录、切换目录、创建目录、删除目录?

# 使用Cwd包,获取当前工作目录
use Cwd;
print cwd, "\n";
chdir ‘../‘ or warn $!; # 改变当前目录
print getcwd;
print "DIrectory to create?";
my $newdir = <STDIN>;
chomp $newdir;
mkdir($newdir, 0755) or die $!;   # 创建目录,权限为755
rmdir($newdir) or die $!;   #删除目录

如何删除文件?给文件改名?

unlink <*.bat>;  #删除匹配文件
$erased = unlink ‘old.exe‘, ‘a.out‘, ‘personal.txt‘;  #删除列表文件,并返回已删除数量
unlink @badfiles;  #删除列表内文件
unlink;  #删除$_内文件
if (!rename "myfile.txt", "archive.txt"){
    warn $!;
}

 

第11学时 系统之间的互操作性


system()函数

捕获输出

 

 

 

 

 

 

第12学时 使用P e r l 的命令行工具


 

 

 

 

 

 

 

第13学时 引用与结构


 

 

 

 

 

 

第14学时 使用模块


 

 

 

 

 

 

第15学时 了解程序的运行性能


 

 

 

 

 

第16学时 P e r l 语言开发界


 

 

 

 

 

 

 

其他:

use Cwd ‘abs_path‘;   #获取指定文件和目录的绝对地址
use warnings;
$myfile= "fastq_R1.txt";
$mydir="./1";
print(abs_path($myfile)."\n");  #使用abs_path函数
print(abs_path($0)."\n");
print(abs_path($mydir)."\n");

以下是语法在只读模式打开file.txt的。这里小于< signe 指示,文件必须以只读模式运行结束

open(DATA, "<file.txt");
 
 
 
 
疑问:
1.qq()连接起来的列表似乎只有一个元素,因为用scalar()和join()连接起来都只发现一个元素???
 
时间: 2024-10-03 01:46:49

Perl 语法 - 高级特性的相关文章

JSP简明教程(五):高级特性

JSP过滤器 过滤器的作用是给web请求增加额外的逻辑,每个页面可以被多个过滤器进行处理.过滤器需要在web.xml文件中进行定义,语法如下.过滤器的执行顺序与filter-mapping的定义顺序相同. <filter> <filter-name>FilterName</filter-name> <filter-class>TestFilter</filter-name> <init-param> <param-name>

JavaScript【5】高级特性(作用域、闭包、对象)

笔记来自<Node.js开发指南>BYVoid编著 1.作用域 if (true) { var somevar = 'value'; } console.log(somevar); JavaScript的作用域完全是由函数决定的,if.for语句中的花括号不是独立的作用域. 1.1.函数作用域 作用域是通过函数来定义的,在一个函数中定义的变量只对这个函数内部可见,我们称为函数作用域.在函数中引用一个变量时,JavaScript会先搜索当前函数作用域,或者称为"局部作用域",

Python高级特性(3): Classes和Metaclasses(转)

原文:Python高级特性(3): Classes和Metaclasses 类和对象 类和函数一样都是Python中的对象.当一个类定义完成之后,Python将创建一个“类对象”并将其赋值给一个同名变量.类是type类型的对象(是不是有点拗口?). 类对象是可调用的(callable,实现了 __call__方法),并且调用它能够创建类的对象.你可以将类当做其他对象那么处理.例如,你能够给它们的属性赋值,你能够将它们赋值给一个变量,你 可以在任何可调用对象能够用的地方使用它们,比如在一个map中

Python高级特性(2):Closures、Decorators和functools(转)

原文:Python高级特性(2):Closures.Decorators和functools 装饰器(Decorators) 装饰器是这样一种设计模式:如果一个类希望添加其他类的一些功能,而不希望通过继承或是直接修改源代码实现,那么可以使用装饰器模式.简单来说 Python中的装饰器就是指某些函数或其他可调用对象,以函数或类作为可选输入参数,然后返回函数或类的形式.通过这个在Python2.6版本中被新 加入的特性可以用来实现装饰器设计模式. 顺便提一句,在继续阅读之前,如果你对Python中的

Python高级特性(1):Iterators、Generators和itertools(转)

译文:Python高级特性(1):Iterators.Generators和itertools [译注]:作为一门动态脚本语言,Python 对编程初学者而言很友好,丰富的第三方库能够给使用者带来很大的便利.而Python同时也能够提供一些高级的特性方便用户使用更为复杂的数据结构.本系 列文章共有三篇,本文是系列的第一篇,将会介绍迭代器.生成器以及itertools模块的相关用法.由于作者 Sahand Saba 列举的示例中有诸多专业的数学相关内容,因此翻译中有诸多不妥之处请大家指出,非常感谢

python函数高级特性

掌握了Python的数据类型.语句.函数,基本可以编写出很多有用的程序了.但是Python中,代码不是越多越好,而是越少越好.代码不是越复杂越好,而是越简单越好.基于这一思想,我们来介绍python中非常有用的高级特性,1行代码能实现的功能绝不用5行代码,请始终牢记,代码越少,开发效率越高. 切片(Slice) 取一个list或tuple的部分元素是非常常见的操作,比如,一个list如下: L=['Micheal','Sarah','Bob','Jack'] 当我们要取前N个元素,使用循环操作很

技术篇7.0类的高级特性

类除了具有普通的特性之外,还具有一些高级特性,如包.内部类等.包在整个管理中起到了非常重要的作用,使用包可以有效地管理繁杂的类文件,解决类重名问题,当在类中配合与权限修饰符使用时,可以控制其他人对类成员的访问.同时在Java语言中一个更为有效的隐藏实现细节的技巧是使用内部类,通过使用内部类机制可以向上转型为被内部类实现的公共接口.由于在类中可以定义多个内部类,所以实现接口的方式也不止一个,只要将内部类中的方法设置为类最小范围的修饰权限即可将内部类的实现细节有效地隐藏. 抽象类 (概念)所谓抽象类

(升级版)Spark从入门到精通(Scala编程、案例实战、高级特性、Spark内核源码剖析、Hadoop高端)

本课程主要讲解目前大数据领域最热门.最火爆.最有前景的技术——Spark.在本课程中,会从浅入深,基于大量案例实战,深度剖析和讲解Spark,并且会包含完全从企业真实复杂业务需求中抽取出的案例实战.课程会涵盖Scala编程详解.Spark核心编程.Spark SQL和Spark Streaming.Spark内核以及源码剖析.性能调优.企业级案例实战等部分.完全从零起步,让学员可以一站式精通Spark企业级大数据开发,提升自己的职场竞争力,实现更好的升职或者跳槽,或者从j2ee等传统软件开发工程

JDBC高级特性(一)结果集,批量更新

一.ResultSet的高级特性 1 可滚动ResultSet 1)向前和向后滚动 滚动特性 在JDBC初期版本中, ResultSet仅能向前滚动 在JDBC后续版本中, ResultSet默认能向前滚动或前后滚动 迟缓滚动:记录集可前后滚动,不受数据库数据更新影响 灵敏滚动:记录集可前后滚动,受数据库数据更新影响 由结果集类型设定 con.createStatement() con.createStatement(结果集类型, 结果集并发类型) con.createStatement(结果集