来看一道Perl面试题

来看一道Perl面试题,第1张

概述据说这道题是QQ的,看下怎么解答为好 题目: 把当前目录下(包含子目录)下所有后缀为.sh的文件后缀变更为.shell(用PERL完成) 一、先人为的制造一些.sh文件 这个用shell吧,方便 for i in `seq 100`;do touch $i.sh;done  for i in testa testb testc testd teste testf te

据说这道题是QQ的,看下怎么解答为好

题目:

把当前目录下(包含子目录)下所有后缀为.sh的文件后缀变更为.shell(用PERL完成)

一、先人为的制造一些.sh文件

这个用shell吧,方便

  for i in `seq 100`;do touch $i.sh;done     for i in testa testb testc testd teste testf testg;do touch /home/test/$i.sh;done   

好,生成文件,OK,部分图

  [root@test ~]# ll /home/     total 404     drwxr-xr-x 2 root root 4096 Mar  2 09:20 100.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 10.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 11.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 12.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 13.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 14.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 15.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 16.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 17.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 18.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 19.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 1.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 20.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 21.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 22.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 23.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 24.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 25.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 26.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 27.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 28.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 29.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 2.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 30.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 31.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 32.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 33.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 34.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 35.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 36.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 37.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 38.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 39.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 3.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 40.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 41.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 42.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 43.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 44.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 45.sh     drwxr-xr-x 2 root root 4096 Mar  2 09:20 46.sh   

/home/test下

  [root@test ~]# ll /home/test/     total 0     -rw-r--r-- 1 root root 0 Mar  2 09:48 testa.sh    -rw-r--r-- 1 root root 0 Mar  2 09:48 testb.sh 
-rw-r--r-- 1 root root 0 Mar  2 09:48 testc.sh -rw-r--r-- 1 root root 0 Mar  2 09:48 testd.sh -rw-r--r-- 1 root root 0 Mar  2 09:48 teste.sh -rw-r--r-- 1 root root 0 Mar  2 09:48 testf.sh -rw-r--r-- 1 root root 0 Mar  2 09:48 testg.sh

写perl 脚本,记得perl有一个模块叫file::Find,可以完成这个效果,试下

code:

  #!/usr/bin/perl -w          use strict;     use file::Find;          sub wanted {              if (-f $file::Find::name) {                  if ($file::Find::name =~ m/\.sh$/) {                 #print $file::Find::name,"\n";                 #print $_,"\n";                 #print $file::Find::dir,"\n";                 $file::Find::name =~ s/\.sh$/\.shell/g;                 rename $_,$file::Find::name;             }              }                   find(\&wanted,'/home');   

运行一下,测试,大喜,完成,部分图

  [root@WEB-01 ~]# ll /home/     total 4     -rw-r--r-- 1 root root    0 Mar  2 09:47 100.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 10.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 11.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 12.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 13.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 14.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 15.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 16.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 17.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 18.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 19.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 1.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 20.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 21.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 22.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 23.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 24.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 25.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 26.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 27.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 28.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 29.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 2.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 30.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 31.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 32.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 33.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 34.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 35.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 36.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 37.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 38.shell     -rw-r--r-- 1 root root    0 Mar  2 09:47 39.shell   

/home/test下

  [root@WEB-01 ~]# ll /home/test/     total 0     -rw-r--r-- 1 root root 0 Mar  2 09:48 testa.shell     -rw-r--r-- 1 root root 0 Mar  2 09:48 testb.shell     -rw-r--r-- 1 root root 0 Mar  2 09:48 testc.shell     -rw-r--r-- 1 root root 0 Mar  2 09:48 testd.shell     -rw-r--r-- 1 root root 0 Mar  2 09:48 teste.shell     -rw-r--r-- 1 root root 0 Mar  2 09:48 testf.shell     -rw-r--r-- 1 root root 0 Mar  2 09:48 testg.shell   

呵,perl 的file::Find模块有三个特殊的变量

  $_                 包含目录中的当前文件名     $file::Find::dir   包含当前目录名     $file::Find::name  包含$file::Find::dir/$_   

其他的功能尚待研究ing.谢谢大家。

总结

以上是内存溢出为你收集整理的来看一道Perl面试题全部内容,希望文章能够帮你解决来看一道Perl面试题所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存