-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 和一个字符串,但不能加入 $initials。

4

2 回答 2

2

您没有指出您认为哪个位不起作用,但我怀疑这是因为您在创建的文件夹/文件名中嵌入了一个换行符。

使用下面的代码,您可以将 $mydate 初始化为日期字符串,并使用 STDIN 中的一行初始化 $initials:

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

这里要注意的是 $initials 在输入的末尾有一个换行符;在加入他们之前,你会想要摆脱那个换行符。以下代码将执行您想要的操作:

chomp ($initials);
$mydate .= $initials;
于 2013-05-06T18:57:28.660 回答
1

当我运行您的代码时,我收到一个错误:“无法创建 /test/130506SS”。

一个问题是mkdir不能递归地创建目录,但您可以make_pathFile::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
于 2013-05-06T18:59:52.777 回答