导航:首页 > 程序命令 > perl单行命令

perl单行命令

发布时间:2022-08-30 06:41:23

⑴ perl控制脚本某一行命令不执行

把你的脚本贴出来,另外if不消耗内存。

⑵ perl单行命令可以按照斜杠分割吗

用 s///这个的时候,你转义了没有。 s/\\/\// 前面再加个转义字符\。试试。

⑶ 如何用perl运行单行命令

可以使用单撇号,例如:

$str=`ls-f`;

这个语句执行命令ls -f并把结果存放到字符串变量$str里面。

⑷ 如何系统的学习Perl语言

Perl是典型的脚本语言,短小精悍,非常容易上手,尤其适合处理文本,数据,以及系统管理。它在老一辈的生物信息学分析人员中非常流行,出于历史遗留原因大家肯定会或多或少地接触 Perl,即使你再怎么推崇Python或者GO等新兴编程语言。
1 入门资料
两个半小时入门指导:https://qntm.org/files/perl/perl.html
21天学完 perl,自己搜索下载pdf书籍吧!
大小骆驼书,建议都看完,以囫囵吞枣的方式阅读,只看基础知识来入门,难点全部跳过。
官网:https://www.perl.org/
函数如何用:都可以在http://perldoc.perl.org/perl.html 查到
论坛:http://www.perlmonks.org/
2 知识要点
在看书的同时,你必须记住和熟练使用的知识点是下面这些:
理解perl里面的三种变量表示方式
$ 表示单个变量
用单双引号区别,q(),qq()
@ 表示多个变量组成的数组,qw()
% 表示关系型变量-hash
变量不严格区分类型,没有int/float/double/char这样的概念
三种变量都有对应的操作技巧:
简单变量的操作函数
Numerical operators: <> >, <> >=, ==, !=, <=>, +, *
String operators: lt, gt, le, ge, eq, ne, cmp, ., x
数组操作(pop/push/shift/unshift/splice/map/grep/join/split/sort/reverse)
hash操作方式
(keys,values,each,delete,exists)
具体需要在实战里面体会:http://www.biotrainee.com/forum-90-1.html 生信人必练的200个数据处理任务(欢迎大家去练习)
变量内容交换,字符型转为数值型,字符串转为字符数组,字符串变量,heredoc,字符串分割,字符串截取,随机数生成,取整,各种概率分布数,多维矩阵如何操作,进制转换,hash翻转,数组转hash
上下文环境
这个比较复杂: http://www.perlmonks.org/?node_id=738558,就是需要理解你写的程序是如何判断你的变量的,你以为的不一定是你以为的。
正则表达式
这也是一个非常重要的一块内容,基础用法就是m和s,一个匹配,一个替换,比较有趣的就是1,2等等捕获变量。
内建变量
就是perl语言设计的时候定义了一大堆的全局变量($_ $, $0 $> $< $!="" $.="" @argv="" @f="" @_="" @inc="" %env="">)
。外表上看起来都是一个$ @ %符号后面加上一大堆的奇奇怪怪的字符,表示一些特殊变量,这也是perl语言饱受诟病的原因。但是有些非常重要,懂了它之后写程序会方便。下载一个表格,里面有近100个预定义变量需要学习的。
控制语句(循环/条件/判断)
if ... elsif ... else ...
unless/while/next/last/for/foreach
读写文件,脚本实战!
while(<>){
#do something !
}
这是我最喜欢的一个程序模板,读取文件,根据需要处理文件,然后输出。需要实现非常多的功能,然后就可以自己总结脚本技巧,也能完全掌握perl的各种语法。在生物信息学领域,需要实现的功能有!
perl 单行命令
我个人特别喜欢这个知识点,我也专门下载过一本书来学习,把这个教程看完就基本上能全明白:http://www.catonmat.net/blog/perl-one-liners-explained-part-one/。学习单行命令的前提是掌握非常多的奇奇怪怪的perl自定义变量和perl的基础语法,用熟练了之后就非常方便,很多生物信息学数据处理过程我现在基本不写脚本,都是直接写一行命令,完全代替了shell脚本里面的awk、sed/grep系列命令。(perl -p -a -n -a -l -i -F -M)
预定义函数
perl 是一个非常精简的语言,自定义的函数非常少,连min max这样常见的函数都没有,如果你需要使用这样的功能,要么自己写一个函数,要么使用加强版的包,perl的包非常多。
下面列出一些,我常用的函数:
程序必备: use/die/warn/print/open/close/<>/
数学函数:sin/cos/log/abs/rand/srand/sqrt
字符串函数 :uc/lc/scaler/index/rindex/length/pos/substr/sprintf/chop/chomp/hex/int/oct/ord/chr/unpack/unencode
defined/undef
系统操作相关
perl语言是跨平台的,因为它的执行靠的是perl解释器,而perl的解释器可以安装在任何机器上面。所以可以用perl来代替很多系统管理工作。
系统命令调用
文件句柄操作(STDIN,STDOUT,STDERR,ARGV,DATA,)
系统文件管理(mkdir/chdir/opendir/closedir/readdir/telldir/rmdir/)
一些高级技巧
自定义函数 sub , 参数传递,数组传递,返回值
模块操作(模块安装,加载,模块路径,模块函数引用)
引用(变量的变量)
选择一个好的编辑器-编译器,editplus,notepad++,jEdit,编程习惯的养成。
搞清楚perl版本的问题,还有程序编码的问题,中文显示的问题。
程序调试
perl常见模块学习
perl和LWP/HTML做网络爬虫必备,重点是DOM如何解析;
perl和CGI编程,做网站的神器,重点是html基础知识;
DBI相关数据库,用perl来操作mysql等,当然,重点是mysql知识;
GD and GD::Graph 可以用来画图,但是基本上没有人用了,除了CIRCOS画圈圈图火起来了;
TK模块,可以编写GUI界面程序,但是也几乎没有人用了;
XML/pdf/excel/Json 相关的模块可以用来读取非文本格式数据,或者输出格式化报告;
socket通信相关,高手甚至可以写出一个QQ的模仿版本;
最后不得不提的就是Bioperl了,虽然我从来没有用过,但是它的确对初学者非常有用,大多数人不提倡重复造轮子,但我个人觉得,对初学者来说,重复造轮子是一个非常好的学习方式。大家可以仿造bioperl里面的各个功能,用自己的脚本来实现!
3 复习资料
如果你感觉学的差不多了,就可以下载一些复习资料,查漏补缺:
http://michaelgoerz.net/refcards/perl_refcard.pdf
https://rc.hms.harvard.e/training/perl/Perl%20Cheat%20Sheet.pdf
https://www.cheatography.com/mishin/cheat-sheets/perl-reference-card/
http://www.catonmat.net/download/perl.predefined.variables.pdf
http://www.erudil.com/preqr.pdf
https://www.cs.tut.fi/~jkorpela/perl/regexp.html
https://support.sas.com/rnd/base/datastep/perl_regexp/regexp-tip-sheet.pdf

⑸ 用perl打开dos,写入一行命令

#!perl

use warnings;
use win32;

$argument = 'dir -l';

system (cmd.exe $argument)
or die "Wrong: $!";

⑹ Perl入门教程

2楼真是的,人家还没入门,你直接整个文件操作干嘛?
什么是Perl?

Perl 是一种最初开发用于文本操作的编程语言。现在它能应用于广泛的任务,包括系统管理、 web 开发、 网络编程、 GUI 开发和更多的普通用途。

这个语言以实用性为目标(易用、高效、完整)宁愿失去美丽(小巧、优雅、迷你)。它使用方便,且支持面向过程和面向对象编程,内置强大的文本处理支持,并有世界上最令人印象深刻的第三方模块的集中营。
运行Perl程序

在Unix命令行运行Perl程序:

perl progname.pl

另一种方法是,把这个放到你的脚本第一行:

#!/usr/bin/env perl

然后用/path/to/script.pl运行。当然,首先得让它能执行,你得chmod 755 script.pl(Unix下)。

(这里的第一行假设你有env程序。你也可以直接把你的perl解释器的路径直接放到第一行,比如#!/usr/bin/perl)
安全保障

默认情况下,Perl非常随意。为了使它更强健建议每个程序由下列行开始:

1. #!/usr/bin/perl
2. use strict;
3. use warnings;

附加的两行从perl中捕获您的代码中的各种常见的问题。它们检查不同的事情,所以你需要两个都加上。一个潜在的问题通过use strict;捕获,一旦它捕获到问题,会马上让你的程序停止运行。当然使用use warnings;时,仅仅出现警告(就好像命令行的-w选项)并不会停止程序。
基本语法概述

一个Perl脚本或程序包含一条或多条语句。这些语句只需直接写在脚本中,而不需要像main()这样的东西作为程序入口。

Perl语句以分别结束:

print "Hello, world";

以星号(#)开始的语句是注释:

# This is a comment(这是一条注释)

空白字符会被Perl忽略:

1. print
2. "Hello, world"
3. ;

……引号里的字符串除外:

1. # this would print with a linebreak in the middle
2. print "Hello
3. world";

字符串使用双引号或单引号:

1. print "Hello, world";
2. print 'Hello, world';

然而,只有双引号会“插入”变量值和像换行符(\n)这样的特殊字符(转义字符):

1. print "Hello, $name\n"; # works fine
2. print 'Hello, $name\n'; # prints $name\n literally

数字不需要引号:

print 42;

你可以使用或省略括号来传递函数的参数。它们只是在偶尔要改变或明确优先级的时候必须使用。

1. print("Hello, world\n");
2. print "Hello, world\n";

Perl变量类型

Perl有3种主要的变量类型:标量(scalars)、数组(arrays)和哈希(hashes)。

* 标量(Scalars)

一个标量表示只有一个值:

1. my $animal = "camel";
2. my $answer = 42;

标量的值可以是字符串、整数或浮点数,并且Perl会在需要的时候自动转换。你不需要预先声明你的变量类型,但是你需要在第一次使用它们的时候,使用my来声明它们。(这是use strict;所要求的)

标量可以用不用的方式使用:

1. print $animal;
2. print "The animal is $animal\n";
3. print "The square of $answer is ", $answer * $answer, "\n";

有大量的“魔法”标量的名称看上去像标点或线路噪音。这些特殊的变量用于各种目的。现在你只要知道其中一个,这就是“默认变量”$_。它被许多Perl的函数用作默认的参数,并且它被隐式设置到某些循环结构中。

print; # prints contents of $_ by default(默认打印$_的内容)

* 数组(Arrays)

数组用于表示一些值的列表:

1. my @animals = ("camel", "llama", "owl");
2. my @numbers = (23, 42, 69);
3. my @mixed = ("camel", 42, 1.23);

特殊变量$#array将返回数组最后一个元素的索引:

print $mixed[$#mixed]; # last element, prints 1.23

你可能想使用$#array + 1来得到这个数组的元素个数。别急,这很容易。在Perl预想找到一个标量值的时候(“在标量上下文”),使用@array会得到数组的元素个数:(译注:“上下文”是Perl很重要的特性之一,请查阅相关文档或在无忧Perl搜索相关内容)

if (@animals < 5) { ... } #译注:当@animals数组的元素个数少于5个的时候

当我们从数组获得元素值的时候,需要使用$,因为我们只要获取数组里的一个值;你请求一个标量,然后会获得一个标量。

从数组里获取多个值:

(译注:获取多个值,使用@,因为我们要获取数组里的几个值(列表)。)

1. @animals[0,1]; # gives ("camel", "llama");
2. @animals[0..2]; # gives ("camel", "llama", "owl");
3. @animals[1..$#animals]; # gives all except the first element

这叫“数组切片”。

你可以在列表里干些有意义的事情:

1. my @sorted = sort @animals;
2. my @backwards = reverse @numbers;

有两个特殊的数组,一个是命令行传到你脚本的参数@ARGV;另一个是传递给子程序的参数@_。
* 哈希

哈希用来表示键/值对:

1. my %fruit_color = ("apple", "red", "banana", "yellow");

你可以使用空白字符和=>操作符来美化上面的代码:

1. my %fruit_color = (
2. apple => "red",
3. banana => "yellow",
4. );

获取哈希元素:

1. $fruit_color{"apple"}; # gives "red"

你可以通过keys()和values()来获取键列表和值列表。

1. my @fruits = keys %fruit_colors;
2. my @colors = values %fruit_colors;

哈希没有特定的内部排序,然而你可以对键进行排序来遍历它。

和特殊的标量、数组一样,哈希也有特殊的。我们现在只要知道哈希%ENV包括所有环境变量



更复杂的数据类型可以使用引用来构造,允许你把列表和哈希放到另一个列表和哈希中。

引用是一个标量值,它可以引用任何其它的Perl数据类型。通过把引用存储为数组或哈希的元素值,你可以轻松创建列表/哈希中的列表/哈希。

以下示例演示了使用匿名哈希引用实现的两级哈希结构

1. my $variables = {
2. scalar => {
3. description => "single item",
4. sigil => '$',
5. },
6. array => {
7. description => "ordered list of items",
8. sigil => '@',
9. },
10. hash => {
11. description => "key/value pairs",
12. sigil => '%',
13. },
14. };
15.
16. print "Scalars begin with a $variables->{'scalar'}->{'sigil'}\n";

变量作用域

上面所有的例子都使用这种语法:

1. my $var = "value";

实际上,my不是必须的。你可以省略:(译注:前提是,你没有使用“use strict;”语句)

1. $var = "value";

但是,上面的用法将创建一个全局变量,这是一个很差的编程实践。my创建一个词法作用域变量,这个变量只在定义它们的语句块中可见(比如一段包在大括号里的语句)。

1. my $x = "foo";
2. my $some_condition = 1;
3. if ($some_condition) {
4. my $y = "bar";
5. print $x; # prints "foo"
6. print $y; # prints "bar"
7. }
8. print $x; # prints "foo"
9. print $y; # prints nothing; $y has fallen out of scope

结合使用my和在Perl脚本开头使用use strict,解释器将捕获常见的编程错误。比如,在上面的例子中,最后的print $y将引发一个编译时错误并阻止程序运行。强烈建议使用use strict语句!
条件和循环语句

Perl有许多常用的条件和循环语句。Perl 5.10甚至提供了分支语句(拼作given/when)。

条件可以是任何Perl表达式。比较和布尔条件语句中常用的逻辑运算符,请参阅有关信息的下一节中的运算符的列表。

* if

1. if ( condition ) {
2. ...
3. } elsif ( other condition ) {
4. ...
5. } else {
6. ...
7. }

还有否定版本的:

1. unless ( condition ) {
2. ...
3. }

这个否定版比if (!condition)更易读。

注意,大括号是必须的,即使代码块中只有一行。不过,这里有一个方法可以让你通过类似英语的语法来实现单行条件语句:

1. # the traditional way
2. if ($zippy) {
3. print "Yow!";
4. }
5.
6. # the Perlish post-condition way
7. print "Yow!" if $zippy;
8. print "We have no bananas" unless $bananas;

* while

1. while ( condition ) {
2. ...
3. }

为了和unless同样的理由,也有一个否定版本:

1. until ( condition ) {
2. ...
3. }

你也可以在后置条件里使用while:

print "LA LA LA\n" while 1; # loops forever

* for

跟C语言一样:

1. for ($i = 0; $i <= $max; $i++) {
2. ...
3. }

自然Perl提供了更友好的列表遍历循环foreach以后,C语言风格的for循环在Perl几乎不需要了。
* foreach

1. foreach (@array) {
2. print "This element is $_\n";
3. }
4.
5. print $list[$_] foreach 0 .. $max;
6.
7. # you don't have to use the default $_ either...
8. foreach my $key (keys %hash) {
9. print "The value of $key is $hash{$key}\n";
10. }

内置操作符和函数

Perl 附带了各种各样的内置函数。我们已经看到的几个,包括print,sort和reverse。

Perl常见操作符(运算符)

* 算术

1. + 加法
2. - 减法
3. * 乘法
4. / 除法

* 数字比较

1. == 等于
2. != 不等于
3. < 小于
4. > 大于
5. <= 小于等于
6. >= 大于等于

* 字符串比较

1. eq 等于
2. ne 不等于
3. lt 小于
4. gt 大于
5. le 小于等于
6. ge 大于等于

(为什么数字和字符串的比较运算符不同?因为我们没有不同的变量类型,并且Perl需要知道是以数字进行排序(99小于100)还是以字母进行排序(100在99前面))
* 逻辑

1. && and 和
2. || or 或
3. ! not 否

* 混合

1. = 赋值
2. . 字符串连接
3. x 字符串乘法
4. .. 范围 (建立一个列表)

一些操作符可以和=结合,像这样:

1. $a += 1; # same as $a = $a + 1
2. $a -= 1; # same as $a = $a - 1
3. $a .= "\n"; # same as $a = $a . "\n";

文件和I/O

你可以使用open()函数来打开一个文件,用于输入或输出:

1. open(my $in, "<", "input.txt") or die "Can't open input.txt: $!";
2. open(my $out, ">", "output.txt") or die "Can't open output.txt: $!";
3. open(my $log, ">>", "my.log") or die "Can't open my.log: $!";

你可以使用<>操作符从打开的文件句柄中读数据。在标量上下文中,它从文件句柄中读取一行;在列表上下文中,它读取整个文件,并将每一行作为列表的元素。

1. my $line = <$in>;
2. my @lines = <$in>;

一次性把整个文件读完,叫做“啜食(slurping)”。它能让人满意,但它可能是内存吞噬者。大多数文本文件处理可以通过Perl的循环结构,一行一行地完成。

<>操作符经常出现在while循环里:

1. while (<$in>) { # assigns each line in turn to $_
2. print "Just read in this line: $_";
3. }

我们已经看到了如何使用print()在标准输出里打印。但是,print()还能通过第一个可选参数指定一个文件句柄来打印(译注:将内容输出到指定的文件句柄中,即写入到文件句柄相关联的文件中)

1. print STDERR "This is your final warning.\n";
2. print $out $record;
3. print $log $logmessage;

当你完成了对文件句柄的操作之后,你应该使用close()来关闭文件句柄。(老实说,如果你忘记关闭了,Perl会帮你处理。)

close $in or die "$in: $!";

正则表达式

Perl对正则表达式的支持宽广而深入:

* 简单匹配

1. if (/foo/) { ... } # true if $_ contains "foo"
2. if ($a =~ /foo/) { ... } # true if $a contains "foo"

//匹配操作符(译注,完整的应该是:m//)默认操作$_,或者使用=~来绑定其它变量进行操作。
* 简单置换

1. s/foo/bar/; # replaces foo with bar in $_
2. $a =~ s/foo/bar/; # replaces foo with bar in $a
3. $a =~ s/foo/bar/g; # replaces ALL INSTANCES of foo with bar in $a

* 更复杂的正则表达式

你不仅能匹配固定的字符串。其实,你可以匹配任何你能想到的复杂正则表达式。

1. . 单个任意字符(默认不包含\n)
2. \s 一个空白字符 (空格, tab, 换行, ...)
3. \S 一个非空白字符
4. \d 一个数字 (0-9)
5. \D 一个非数字
6. \w 一个能组成单词的字符 (a-z, A-Z, 0-9, _)
7. \W 一个不能组成单词的字符
8. [aeiou] 匹配中括号内的任意一个字符
9. [^aeiou] 匹配除了中括号内列出的字符之外的任意一个字符
10. (foo|bar|baz) 匹配foo或bar或baz
11.
12. ^ 匹配开头
13. $ 匹配结尾

量词可用来指定数量:

1. * 零个或任意多个
2. + 至少一个
3. ? 零个或一个
4. {3} 3个
5. {3,6} 3到6个
6. {3,} 至少3个

一些简单的例子:

1. /^\d+/ 以一个或多个数字开头
2. /^$/ 空的,没有任何东西
3. /(\d\s){3}/ 3个带空白字符的数字
4. (比如 "3 4 5 ")
5. /(a.)+/ 匹配最少一次,含有a和任意字符
6. (比如 "abacadaf")
7.
8. # 从STDIN循环读入,并打印出非空白行:
9. while (<>) {
10. next if /^$/;
11. print;
12. }

* 圆括号捕捉

括号的另一个用法是分组。它可以用来捕捉最后使用的正则表达式匹配的结果。这些结果用$1、$2……表示。

1. # a cheap and nasty way to break an email address up into parts
2.
3. if ($email =~ /([^@]+)@(.+)/) {
4. print "Username is $1\n";
5. print "Hostname is $2\n";
6. }

子程序

写一个子程序是很容易的:

1. sub logger {
2. my $logmessage = shift;
3. open my $logfile, ">>", "my.log" or die "Could not open my.log: $!";
4. print $logfile $logmessage;
5. }

现在我们可以像使用其它内置函数一样,使用该子程序了:

1. logger("We have a logger subroutine!");

什么是shift?传递给子程序的参数保存在@_数组中。shift函数的默认参数是@_。所以my $logmessage = shift;去掉第一个参数,并将其赋值给$logmessage。

可以通过别的方法操作@_:

1. my ($logmessage, $priority) = @_; # common(通用)
2. my $logmessage = $_[0]; # uncommon, and ugly(不通过,并且很丑陋)

子程序可以返回值:

# sub square {
# my $num = shift;
# my $result = $num * $num;
# return $result;
# }

然后像这样使用它:

1. $sq = square(8);

Perl面向对象

Perl面向对象相对比较简单,这是实现使用引用什么样的对象知道自己是在Perl的概念为基础的封装。

刚开始进行Perl编程,你最常使用的Perl面向对象将是使用第三方模块,参见下文。
使用Perl模块

Perl 模块提供了一系列的功能,可帮助您避免重复劳动,它们可以通过CPAN(www.cpan.org)下载。许多流行的模块都已经包含在了Perl发行包中。

本文由无忧Perl(www.51perl.com)翻译,转载请注明本文链接:www.51perl.com/perl-brief-introction/

水平有限,错误难免,欢迎指正,并以原文为准。原文地址:http://perldoc.perl.org/perlintro.html

希望对你有用

⑺ mac的终端怎么运行perl语句

1、perl解释器基本在所有的linux平台上都是自带的,用户可以通过如下命令判断是否有perl解释器:
which perl
2、如果自己的linux系统上没有perl解释器,可以去其官网下载安装。
3、在具备perl解释器的情况下,可以参考如下运行步骤:
1)、用vim编写test.pl,代码如下:
#!/usr/local/bin/perlprint "HellonWorld!\n";
2、编写完成后,直接执行如下命令即可:
perl test.perl

3、有时候需要一些权限,自己可以通过su、sudo等命令提示权限。

⑻ linux下怎么运行perl程序

1、perl解释器基本在所有的linux平台上都是自带的,用户可以通过如下命令判断是否有perl解释器:

which perl

2、如果自己的linux系统上没有perl解释器,可以去其官网下载安装。

3、在具备perl解释器的情况下,可以参考如下运行步骤:

1)、用vim编写test.pl,代码如下:

#!/usr/local/bin/perl
print "HellonWorld! ";

2、编写完成后,直接执行如下命令即可:

perl test.perl

3、有时候需要一些权限,自己可以通过su、sudo等命令提示权限。

⑼ 如何调试perl脚本

进入退出:
perl
-d debugtest用调试器载入perl程序运行,交互式界面

Loading
DB routines from perl5db.pl version 1.3

Editor
support available.

Enter
h or `h h' for help, or `perldoc
perldebug'
for more help.

main::(p4.pl:2): my($xx,$yy)=(1,1);

DB<1>

先是欢迎信息,显示第一个可执行行:程序将要执行的当前行号。包名,文件名,文件中的行号。

提示符DB<n>
n为命令行号。h可看帮助,q退出调试器
l
缺省显示10行 再输入l接着显示10行

l
10 指定显示第10行

l
8-10 指定显示行的范围

l
8+3 指定从哪行开始多少行。

l
subs 指定显示函数,提供函数名。如果太长只显示前几行,用l接着显示

-
显示在当前行前面的行,再输入-继续向前

w
7 包含指定行的显示窗口 windows可能不一样

//
?? 从当前行搜索包含指定模式的行 /find/
//从前向后正向搜索,??从后向前逆向搜索 可忽略?? //中后面的? /。

S
列出所有函数,包名::函数
无参数的缺省形式列出所有底层和继承的函数,太多。加上搜索模式,指定当前程序包 S main可列出含main的函数
s 执行单条语句 显示下一条要执行的语句。如果需要交互会等待输入。

对于函数,仅仅是进入不执行,如果不进入函数内部,要跳过用n。不能进入系统内部的库函数,只能进入自己定义的

n 执行一行程序,stepover 不进入函数。

f 执行当前函数剩下的语句,显示跟随函数的语句
step
out 旧命令,现在为切换文件名

回车
如果执行了s或n,以后只用回车重复执行上一个s或n的命令。

r 在函数中执行到函数外
b 10
在哪一行设置断点。如果此行非执行语句,显示不能设置断点。如果一条语句有多行,则在第一行设置,其余行不能设置。

b func在函数处设置断点

b 10
($curdir eq
"") 当条件为真时中断执行

c
执行到断点或终止。继续

c
12临时断点,只中断一次,继续执行在12行中断。

L
列出所有断点。列出前几行,当前行,断点。断点条件。

B
10删除断点。不带参数认为是下一行是断点。

B *
删除所有断点。
X
var 不带参数列出main包的所有变量,包括预定义的变量。指定变量不带$,@。可能是符号表中的变量才行。现在与V同。

V
var 列出任何包的变量。只指定包名列出包的所有变量。指定包及变量为main
var。无::

S
列出所有可用的函数,包名::函数 无参数的缺省形式列出所有底层和继承的函数,太多。加上搜索模式,

指定当前程序包
S
main可列出含main的函数

p
expr
指印表达式值。把标准输出重定向也会输出到屏幕。
程序到达某一行时指定执行一条或多条语句。常见的行动作是显示变量值或把含错误值的变量重置为指定的值

a
10 print ("curdir is $curdir\n") 多条语句在一行中用分号;分开,当要续行时用\ 执行完第10行执行指定的语句。

A
*删除所有行动作
A 10删除第10行的动作

>
print 在程序开始执行前执行语句。无参数形式删除设置

<
print 在程序执行完成后执行语句。无参数形式删除设置
跟踪 显示每一个执行行。

t
打开,关闭跟踪。每执行显示一行。

任何非调试命令的perl语句都可执行。分号可忽略。更改变量值。

H
列出从前命令

!
n 执行从前命令。忽略行号执行上一条命令
n=-2跳过2条命令。从当前H列表逆向跳过。

T
栈跟踪。调用级

$
= &main::sub2('hi') from file debug1 line 7

$
= &main::sub1('hi') from file debug1 line 3

当前程序在第7行,在main包的sub2函数中,以hi为实际传递的参数。返回简单变量,此函数由sub1调用。

=
别名 命令 给命令定义别名 =
pc print ("curdir is $curdir\n");别名存在%DB(%DB::alias)中。无参数列出定义的别名。输入pc打印语句。

预定义别名:每次加载调试器自动定义别名。在.perldb中加入$DB'alias{"pc"} = 's/^pc/print
("curdir is $curdir\n");/';
错误检查
Lint perl -MO=Lint,-u pl 编译时检查

perldiag错误信息

-w 重定义函数变量未使用

Use strict;

use diagnostics 警告信息。
命令行参数简介
-c 语法检查

-v版本

-w警告信息

-e执行单行程序

-s为程序提供命令行选项。perl -s prog.pl
-q =>$q=1作为选项。不出现在@ARGV中。否则不加-s,-q作为字符串存在@ARGV中。可赋值-abc="abc"
跟在程序名后带-的是选项,不带-的不是,不是选项的项后面的所有都不是选项。

-P先运行c预处理器,输出再由perl执行

-I指定目录中的包含文件

-n循环处理多个文件。不用while

-p读文件行并显示。同n,不用print自动显示。

-i编辑文件,读然后写回文件。
-a分割行到@F

-F分割模式,指定分割符

-0
指定输入行结束符,用八进制表示

-1
指定输出行结束符

-x从消息中抽取程序。忽略行,直到遇到#!..perl。到文件尾,ctrl-d
ctrl-z __END__时结束

-u产生coremp

-U可以执行不安全操作

-S从路径中查找程序

-D设置调试标志

-T写安全程序。从外部获得的数据不能作为命令或修改文件系统

-d使用调试器

⑽ perl: 如下命令

用双引号:
perl -p -i.bak -w -e "s/a/b/g" fred.pl
---------------------------
C:\Documents and Settings\t>perl -p -e "" fred.pl
abc

C:\Documents and Settings\t>perl -p -i.bak -w -e 's/a/b/g' fred.pl
Useless use of a constant in void context at -e line 1.

C:\Documents and Settings\t>del fred.pl.bak

C:\Documents and Settings\t>perl -p -i.bak -w -e "s/a/b/g" fred.pl

C:\Documents and Settings\t>perl -p -e "" fred.pl
bbc

阅读全文

与perl单行命令相关的资料

热点内容
做什么app赚钱 浏览:83
博途编译失败联系客户支持部门 浏览:926
金蝶旗舰版编译 浏览:50
万象服务器断电后启动不了怎么办 浏览:356
我的世界苹果版的2b2t服务器地址咋查 浏览:95
xlsx转换pdf 浏览:98
3dmax挤出命令英语 浏览:903
靶心率的定义和算法 浏览:514
3d模术师app哪里下载 浏览:474
php中文api文档 浏览:458
安卓设计怎么加入输入框 浏览:185
主根服务器什么时候开始 浏览:738
奇门遁甲完整版pdf 浏览:904
app软件怎么用的 浏览:802
电子书pdf购买 浏览:194
浪潮服务器如何做系统 浏览:112
冒险岛img格式加密 浏览:598
我的世界手游如何复制命令 浏览:660
天刀自动弹琴脚本源码 浏览:971
打开其它app微信怎么收不到 浏览:447