Perl Learning - 9 (printf, filehandle, open, close)

Perl Learning - 9 (printf, filehandle, open, close),第1张

概述printf is powerer to control the outputs, it's used with a format string, and a list of elements.   printf "Hello, $s; your password expires in %d days!\n", $user, $days_to_die; printf "in %d days!\n" printf is powerer to control the outputs,it's used with a format string,and a List of elements.   printf "Hello,$s; your password expires in %d days!\n",$user,$days_to_dIE;
printf "in %d days!\n",17.85; # in 17 days!   Format string has some kind of 'conversion',each format string starts with '%' and ends with a character.
The number of elements and format strings must be the same,otherwise printf doesn't work.   %d gets integer number,like %d ... 17.85 is 17.
%s gets characters,-15 means align by left.
%f gets fload number.   printf "%6d\n",42;
printf "%2d\n",2e3+1.95;
printf "%15s\n","wilma";
printf "%-15s\n","flintstone"; printf "%12f\n",6*7+2/3;
printf "%12.3f\n",6*7+2/3;
printf "%12.0f\n",6*7+2/3;   $ ./printf.pl
Hello,Larry; your password expires in 5 days!
in 17 days!
    42
2001
          wilma
flintstone
   42.666667
      42.667
          43   If you want output a '%',use '%%','\%' don't work. printf "Monthly interest rate: %.2f%%\n",5.25/12; # Monthly interest rate: 0.44%   filehandle is the name of I/O connection in Perl program,is the brIDge between perl and outsIDe world.
It's name of connection,but not name of file.   Perl has six buildin filehandle: STDIN,STDOUT,STDERR,DATA,ARGV,ARGVOUT
STDIN=standard input
STDOUT=standard output
STDERR=standard error   If you need other filehandles,use operater 'open'. open CONfig,"dino"; # input from dino
open CONfig,"<dino"; # input from dino
open bedROCK,">fred"; # output to fred,cover the original contents of fred
open LOG,">>logile"; # append to fred   The upper-case are filehandles,the lower-case are filenames.
When opening a filehandle,the default action is get input from file,so the first two has same results. We can use Expressions with filenames.   my $selected_output="my_output";
open LOG,"> $selected_output"; # note the space after '>'   Use 'close' to close a filehandle.
close bedROCK;   if(!open LOG,">>logfile"){
 dIE "Cannot create logfile:$!";
 }
 
'dIE' will end program when 'open' fails,and tell you it cannot open logfile.
$! is the system error messages that shell throws out.   $ ./dIE_open.pl
Cannot create logfile:Permission denIEd at ./dIE_open.pl line 4.   If you don't want the program name,just put a "\n" at the end. $ cat dIE_open.pl
#!/usr/bin/perl if(!open LOG,">>logfile"){
        dIE "Cannot create logfile:$!\n";
        }
  
$ ./dIE_open.pl
Cannot create logfile:Permission denIEd   After a filehandler opens,it can be used as STDIN to get input lines.   if(!open PASSWD,"/etc/passwd"){
 dIE "How dID you get logged in?($!)";
 }
while(<PASSWD>){
 chomp;
 print "$_\n";
 }
 
$ ./dIE_open.pl
root:x:0:0:RHEL5:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
......
Exercises:

1. Write a program,print the reversed lines from input.

#!/usr/bin/perl

while(<>){
    push @lines,$_;
}

@lines=reverse @lines;
foreach(@lines){
    print $_;
}
###########################################

2. Write a program,user input lines of characters,then print the formatted lines that right align by 20 bits.

#!/usr/bin/perl

print "1234567890" x 7 . "\n";

while(<>){
    chomp;
    printf "%20s\n",$_;
}
###########################################

3. Modify the above program,let user input the align wIDth.

#!/usr/bin/perl

chomp($wIDth=<STDIN>);
print "1234567890" x $wIDth . "\n";
while(<>){
    chomp;
    printf "%${wIDth}s\n",$_;
} 总结

以上是内存溢出为你收集整理的Perl Learning - 9 (printf, filehandle, open, close)全部内容,希望文章能够帮你解决Perl Learning - 9 (printf, filehandle, open, close)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

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

原文地址: http://outofmemory.cn/langs/1293069.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存