Perl脚本使文件名的最后4个字符全部大写

Perl脚本使文件名的最后4个字符全部大写,perl,Perl,使文件名的最后4个字符都大写的那一行是什么?我试图将文件名从a.)gh4567_yh7l_jk12改为b.)gh4567_yh7l_jk12我需要它使最后四个字符都大写,而不改变第一个字符 #!/usr/bin/perl chdir "folder path"; @files = `ls *.tif`; chomp @files; foreach $oldname (@files) { $newname = $oldname; #$newname =~ s/(^.{1,8}

使文件名的最后4个字符都大写的那一行是什么?我试图将文件名从a.)gh4567_yh7l_jk12改为b.)gh4567_yh7l_jk12我需要它使最后四个字符都大写,而不改变第一个字符

#!/usr/bin/perl

chdir "folder path";

@files = `ls *.tif`; chomp @files;

foreach $oldname (@files)
{
    $newname = $oldname;
    #$newname =~ s/(^.{1,8})/\U$1/e;
    $newname =~ s/(^.{8})/uc($1)/e;

    print "$oldname -> $newname\n";
    rename("$oldname","$newname");
}

正则表达式记录在中


[答案有限,因为这是家庭作业,而且缺乏努力。]

我真的是个新手。到目前为止,我在想$newname=~s/({4}.^)/uc($1)/e@user1295706:将其编辑到您的问题中,并解释为什么这不符合您的要求(即,显示示例输入、输出以及您希望作为输出的内容)。以下是我尝试过的内容,但我认为它不正确:#/usr/bin/perl-chdir“目录路径”@文件=
ls*.tif
;chomp@files;foreach$oldname(@files){$newname=$oldname;$newname=~s/(^.{8})/uc($1)/e;打印“$oldname->$newname\n”;重命名($oldname“,“$newname”);}@user1295706:使用标记下的“编辑”链接将所有信息放入您的问题中。代码在注释中不可读。你为什么说“我认为这是不对的”?它有用吗?如果没有,它有什么错?(你真的需要解释一下。)@user1295706:快到了。那代码是做什么的?请发布示例输入和输出,以及您想要的输出。