cla*_*laf 6 perl templates date
我正在修改Xcode中预先存在的脚本来自定义我的文件头.脚本是Perl,它不是我最好的语言.:)
我只需要以dd/mm/yy格式在标题中插入当前日期.
这是我的脚本:
#! /usr/bin/perl -w
# Insert HeaderDoc comment for a header
#
# Inserts a template HeaderDoc comment for the header.
use strict;
# get path to document
my $headerPath = <<'HEADERPATH';
%%%{PBXFilePath}%%%
HEADERPATH
chomp $headerPath;
my $rootFileName = &rootFileNameFromPath($headerPath);
print "/*";
print " * $rootFileName\n";
print " * Project\n";
print " *\n";
print " * Created by Me on ";
# in bash it would be something like that :
# date +%d/%m/%y | awk '{printf "%s\n", $1}';
print " * Copyright 2009 My_companie. All rights reserved.\n";
print " *\n";
print " */\n";
sub rootFileNameFromPath {
my $path = shift;
my @pathParts = split (m'/', $path);
my $filename = pop (@pathParts);
my $rootFileName = "$filename";
$rootFileName =~ s/\.h$//;
return $rootFileName;
}
exit 0;
Run Code Online (Sandbox Code Playgroud)
我刚修改了print命令,所以不要问我剩下的代码:)
Tel*_*hus 19
而不是删除strict(!),为什么不让代码strict干净?
my ($mday, $mon, $year) = (localtime(time))[3, 4, 5];
$mon += 1;
$year += 1900;
printf "%02d/%02d/%02d\n", $mday, $mon, $year % 100;
Run Code Online (Sandbox Code Playgroud)
也许更好(因为更熟悉的人看到了Bash方面的问题):
# At the top, under use strict;
use POSIX qw/strftime/;
# then later...
my $date = strftime "%d/%m/%y", localtime;
print "$date\n";
Run Code Online (Sandbox Code Playgroud)
有趣的巧合:Perl的培训澳大利亚公布半正规的提示(你可以通过电子邮件得到他们还是在线的),就在今天有一个新的strftime.
您还可以使用DateTime和相关模块,这对于像这样的小脚本来说当然是完全过分的.但是对于更大的应用程序,你应该使用可靠的模块,而不是做很长的事情.为了记录,使用DateTime你会写:
DateTime->today()->strftime('%d/%m/%y');
Run Code Online (Sandbox Code Playgroud)
或者您可以使用更现代的CLDR格式语言:
DateTime->today->format_cldr('dd/MM/YYYY');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15898 次 |
| 最近记录: |