1. 用printf和sprintf格式化输出
函数printf有如下的格式化功能:
a) 圆整浮点数至十进制的某位。
b) 以小数点来对齐一列数。
c) 右对齐和左对齐输出。
d) 在输出行的准确位置插入文本字符。
e) 以指数形数来显示浮点数
f) 以八进制或十六进制的形式显示无符号的整数。
g) 用固定字段宽度和精度来显示各种标量数据。
printf语法格式如下:
print format-control-string, other-argument;
format-control-string参数描述了输出格式
other-argument是可选项,对应于format-control-string中的每个转换说明。每个转换说明以一个百分号开始,结束于一个转换定义符。一个format-control-string可以包含几个转换说明。
转换定义符 | 说明 |
%d | 显示一个有正负号的十进制整数 |
%o | 显示一个没有正负号的八进制整数 |
%u | 显示一个无正负号的十进制整数 |
%x或%X | 显示一个无正负号的十六进制整数。大写的X表示的是0~9的数位或A~F的字母;而小写的x表明显示的是0~9的数位或者a~f的字母。 |
%e或%E | 用指数形式显示一个浮点数 |
%f | 显示浮点数 |
%g或%G | 显示一个浮点数,要么采用浮点形式f,要么采用指数形式e |
%c | 将指定的字符转换成ASCII |
%s | 显示一个字串 |
%% | 显示一个百分号 |
sprintf和printf的功能相同,只是sprintf返回的是已经格式化的字串,而不是输出。sprintf可以在程序内维护一个格式化的字串。
printf “%u /n”, 455;
printf “The string is %s /n”, $string;
printg “This string is %s /n”, “literal”;
my $line = sprintf “ The %s cost /$ %d /n”, $product, $price;
2. 输出时规定字段宽度和精度
Ø 用于输出数据的字段大小是通过字段宽度来定义的。如果字段宽度大于所要显示数据的宽度,数据一般右对齐并在前面添加一些空白字符。为了格式化字段中的数据,应在转换说明的半份好和转换定义符之间插入一位代表字段宽度的整数。
注意:如果输出值的宽度大于字串的宽度,字段的宽度自动增加;负数的减号占用字段宽度的一位。
printf “%4d /n”, 123;
Ø 不同数据类型,精度有不同的含义。使用整数转换定义符时,精度代表所要输出的最小数位。如果要输出的数据的位数比精度小,输出数据前自动添加0,直至位数与精度相等,整数的缺省精度是1。使用浮点转换定义符e、E和f时,精度代表十进制数小数后的位数。使用转换定义符g和G时,精度代表所要输出数据的重要数据的最大位数。使用转换定义符s时,精度代表所要输出字串的最大字符数。使用精度时,必须在百分号和转换定义符之间依次插入圆点(。)和一个代表精度的整数。
注意:当浮点数以小于其原本十进制数位的精度输出时,输出的是圆整后的值。
printf “% 9.3f /n”, 123.45678;
Ø 还可以使用带有格式化控制字串的参数列表中,通过整数表达式来定义字段宽度。为此,在字段宽度或精度处(或两者)插入星号。如下:
printf “ %*.*f ”, 7 , 2 98.376
上式的字段宽度为7,精度为2,执行后输出98.38。
字段的宽度可以为负,但精度必须为正。字段宽度为负值会输出左对齐的数据。
3. 在printf格式控制字串中使用旗标
旗标 | 含义 |
减号 | 让输出内容左对齐指定字段 |
加号 | 在正数前添加一个加号,在负数前添加一个减号 |
空格 | 在一个并非用+标记打印的正数前加一个空格 |
# | 与八进制转换定义符(o)一起使用时,为输出加上一个前缀O 与十六进制转换定义符(x或X)一起使用时,为输出加上前缀ox或OX 在用e、E、f、g或G输出不带小数部分的浮点数种,强制加上小数点(通常只有在小数点后有1个数位时,小数点才会输出)。对于g和G定义符来说,追尾的0(零)不能删除 |
零(0) | 用前肢的0来填充字段。 |
在格式化控制字串中使用旗标,应将旗标放在百分号的正右边。几个旗标可以在一个转换说明中结合使用。
printf “ % + d /n % + d /n”, 786, -786;
4. 将字串作为perl代码赋值
eval函数只带一个参数(字串或代码块),并将其作为程序体中的perl代码。这个函数使编写有趣的用户交互程序成为可能。如下代码:
eval ( $line = <STDIN>);
该行将把用户输入的字符作为Perl代码直接执行。
Eval函数返回最后一次表达式(字串或代码块)执行后的结果。如果代码块中存在语法错误或其它致命错误,eval函数返回undef并将其存在特殊变量$@中。如果不存在错误,$@置为空串。
注意:eval代码块中的严重错误不会过早的结束程序。因而,eval函数使程序更需注意运行中可能出现的各种错误,它把执行结果储存在特殊变量$@中。因而,经常使用这个函数处理异常,并将信息打印出来。
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>