如何在 Perl 中获取图象文件的尺寸和文件大小

如何在 Perl 中获取图象文件的尺寸和文件大小,第1张

获取文件大小不需要安装额外的模块,用-s *** 作符即可:

假设文件路径在变量$file_path中,那么$file_size文件大小可以用如下语句获得伍谈:

$file_size = -s $file_path

得到的结果单位为Byte(字节),如果要换算成KB,则将结果除1024,如果要滚耐换算成MB,则再除1024,以腔备碰此类推。

要获取图片的尺寸,可以用模块 Image::Size

use Image::Size

my ($globe_x, $globe_y) = imgsize($file_path)

进入退出:

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产生coredump

-U可以执行不安全 *** 作

-S从路径中查找程序

-D设置调试标志

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

-d使用调试器

Linux中使用Perl修改文件当你编写脚本或是安装程序的时候,就需要修改特定袭亩文件的数据,如果这时有自动修改文件的功能,那将会是非常实用的。例如,当你需要移动一个文件中的某个字符串或是命令,当你要改变许多文件的IP地址的时候,这个功能就可以拿来利用了。手动改变这些文件会耗费很长的时间,特别当它是一件重复性的任务。但是,你可高衫以使用Perl程序来完成。所有的Linux供应商都有这个程序。执行以下 *** 作:$perl-pi-e's|[old_string]|[new_string]|g'[file]字符串可以是简单的命令或是常规的表达式。如果你要改变目录的位置(例:从/var/spool/mail到/var/spool/messages),你想要改变目录/etc下的每个文件来反映路径变化。执行以下 *** 作:$find/etc-typef|xargsperl-pi-e's|\/var\/spool\/mail|\/var\/spool\/messages|g'在这个例子上,我们使用搜索和xargs来确保系统只运行常规文件的戚禅腔命令,而不是非常规目录或其它文件类型的命令。这也就运行了/etc目录树,而且会递归的改变所有文件。由于我们/标识,所以我们必须输入了像\/var这样的路径而不是/var。Linux中使用Perl修改文件时我们也可以在Perl表达式使用分隔符。(除了使用|,你也能够使用/,#,@作为分隔符。)执行以下 *** 作,从整个文件里移开一个命令$perl-pi-e's|myword||g'file这就从基本上没有使用任何东西却代替了“myword”.(需要注意的是在第二个和第三个分隔符之间没有空格)。以这种方式使用Perl的话,当你修改配置文件或其它任何类型的数据的时候,你就会极具创造力。它就是一个自动搜索和代替的功能。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12210649.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存