2013-05-06 63 views
-1

我想要做的是在指定的位置创建一个文件夹,然后用该日期和用户名首字母命名该文件夹。我希望用户能够在创建文件夹时输入首字母缩写。我已经想出了如何以正确的格式生成日期,但我需要弄清楚如何将用户输入$ initials添加到一起,以便文件夹名称类似于“130506SS”。我无法弄清楚如何将这两个变量连接在一起以获得正确的文件夹名称。任何人都可以帮我解决这个问题吗?如何加入两个变量来创建文件夹名称?

use strict ; 
    use warnings ; 
    use POSIX qw(strftime); 
    my $mydate = strftime("%y%m%d",localtime(time)); #puts the year month date and time in the correct format for the folder name  
    print "Enter users initials: "; 
    my $initials = <STDIN>; # prompts for user input 

    #$mydate.= "SS"; #stores today's date and the initials 

    $mydate.= $initials; 


    sub capture { 

    my $directory = '/test/' . $mydate; 

     unless(mkdir($directory, 0777)) { 
      die "Unable to create $directory\n"; 

      } 

      }   

    capture(); #creates the capture folder 


    sub output { 

    my $directory = '/test2/' . $mydate; 

     unless(mkdir($directory, 0777)) { 
      die "Unable to create $directory\n"; 

      } 

      }  

    output(); #creates the output folder 

编辑:上述脚本的全部部分工作,除非我试图加入两个变量来创建文件夹名称。 ($ mydate。= $ initials;)我用($ mydate。=“SS”;)测试了它,而脚本完美地工作。我可以设法加入变量$ mydate和一个字符串而不是$首字母。

+0

当你运行你的代码时,你会得到错误消息吗? – toolic 2013-05-06 19:01:27

回答

2

您尚未指出您认为哪个位无法工作,但我怀疑这是因为您已创建了文件夹/文件名中的嵌入换行符。

随着下面你有$指明MyDate初始化为一个日期字符串和$缩写从标准输入的一行:

my $mydate = strftime("%y%m%d",localtime(time)); 
my $initials = <STDIN>; 

这里要注意的一点是,$缩写有一个换行符在的结束输入;在加入他们之前,你会想摆脱那个换行符。下面的代码会做你想要什么:

chomp ($initials); 
$mydate .= $initials; 
1

当我运行代码,我得到一个错误:“无法创建/测试/ 130506SS”。

一个问题是mkdir无法递归创建目录,但可以使用File::Path中的make_path

另一个问题是您应该输入chomp

use strict; 
use warnings; 
use POSIX qw(strftime); 
use File::Path qw(make_path); 
my $mydate = strftime("%y%m%d", localtime(time)); #puts the year month date and time in the correct format for the folder name 
print "Enter users initials: "; 
my $initials = <STDIN>;        # prompts for user input 
chomp $initials; 
#$mydate.= "SS"; #stores today's date and the initials 

$mydate .= $initials; 

sub capture { 
    my $directory = '/test/' . $mydate; 
    unless (make_path($directory)) { 
     die "Unable to create $directory\n"; 
    } 
} 

capture(); #creates the capture folder 
相关问题