写输出Perl?
我正在尝试制作一个类似于这个php函数的perl子例程写输出Perl?,perl,Perl,我正在尝试制作一个类似于这个php函数的perl子例程 private function writeOutput($msg, $type) { echo date("H\:i\:s") . " - [$type] . > $msg\n"; } 我需要一些帮助来定义$msg和$type sub WriteOutput { $sec = sprintf ("%02d", $sum%60); $mins = sprint
private function writeOutput($msg, $type) {
echo date("H\:i\:s") . " - [$type] . > $msg\n";
}
我需要一些帮助来定义$msg
和$type
sub WriteOutput {
$sec = sprintf ("%02d", $sum%60);
$mins = sprintf("%02d", ($sum%3600)/60);
$hrs = int($sum/3600);
print "[$hrs:$mins:$sec]:[$type]>: $msg";
}
据我所知,您的问题是向Perl子例程传递参数
my ($msg, $type) = @_;
Perl将传递给子例程的参数存储在特殊变量@
中。在子程序的开头添加以下行
my ($msg, $type) = @_;
并使用
writeOutput("test", "type1");
Bdw,我希望您不要试图在这里使用全局变量,因为缺少了my
除此之外,我还不清楚什么是
$sum
,据我所知,您的问题是将参数传递给Perl子例程
my ($msg, $type) = @_;
Perl将传递给子例程的参数存储在特殊变量@
中。在子程序的开头添加以下行
my ($msg, $type) = @_;
并使用
writeOutput("test", "type1");
Bdw,我希望您不要试图在这里使用全局变量,因为缺少了my
除此之外,还不清楚什么是
$sum
让我们看看您的PHP子例程:
private function writeOutput($msg, $type) {
echo date("H\:i\:s") . " - [$type] . > $msg\n";
}
首先,Perl没有内置的日期格式化程序。相反,您必须使用模块来处理日期。
另外,在函数中使用了两个参数,分别为$msg
和$type
。Perl在函数调用中不使用函数参数。而是使用shift
:
use Time::Piece; # A nice way to handle datetime. Included since Perl 5.10
use feature qw(say); # Better than `print`. Included since Perl 5.10
sub write_output {
my $msg = shift;
my $type = shift;
my $time = Time::Piece->new(localtime);
say $time->hms . " - [$type] . > $msg";
}
该命令是获取函数输入参数的标准方式。是自Perl 5.10以来处理时间的标准Perl模块。这是一个面向对象的模块。->
与大多数其他语言中的点相似。my$time=time::Piece->new(localtime)代码>基于当前时间创建一个新的Time::Piece
对象。$time->hms
使用hms
方法以HH:MM:SS
格式打印时间
注意my
的使用,它声明并本地化变量(PHP实际上没有)。你应该一直严格使用use代码>和使用警告所有Perl程序上的代码>。然后,您必须使用my
声明所有变量
注意,在Perl中,变量的标准方法是使用所有小写字母,并使用下划线作为分隔符。这是达米安·康威的作品。您可能同意也可能不同意Conway的所有编码标准,但该标准的一个优点是,每个人都使用它们,这使得与他人一起工作的代码变得更加美好——不管您是否喜欢它们。让我们看看您的PHP子例程:
private function writeOutput($msg, $type) {
echo date("H\:i\:s") . " - [$type] . > $msg\n";
}
首先,Perl没有内置的日期格式化程序。相反,您必须使用模块来处理日期。
另外,在函数中使用了两个参数,分别为$msg
和$type
。Perl在函数调用中不使用函数参数。而是使用shift
:
use Time::Piece; # A nice way to handle datetime. Included since Perl 5.10
use feature qw(say); # Better than `print`. Included since Perl 5.10
sub write_output {
my $msg = shift;
my $type = shift;
my $time = Time::Piece->new(localtime);
say $time->hms . " - [$type] . > $msg";
}
该命令是获取函数输入参数的标准方式。是自Perl 5.10以来处理时间的标准Perl模块。这是一个面向对象的模块。->
与大多数其他语言中的点相似。my$time=time::Piece->new(localtime)代码>基于当前时间创建一个新的Time::Piece
对象。$time->hms
使用hms
方法以HH:MM:SS
格式打印时间
注意my
的使用,它声明并本地化变量(PHP实际上没有)。你应该一直严格使用use代码>和使用警告所有Perl程序上的代码>。然后,您必须使用my
声明所有变量
注意,在Perl中,变量的标准方法是使用所有小写字母,并使用下划线作为分隔符。这是达米安·康威的作品。您可能同意,也可能不同意Conway的所有编码标准,但该标准的一个优点是,每个人都使用它们,这使得与他人一起工作的代码更加美好——无论您喜欢与否。对于PHP中的此函数:
private function writeOutput($msg, $type) {
echo date("H\:i\:s") . " - [$type] . > $msg\n";
}
Perl提供了做同样事情的可能性:
use POSIX qw(strftime);
sub WriteOutput {
my($msg, $type) = @_;
my $date = strftime("[%H:%M:%S]", localtime);
print "$date:[$type]>: $msg";
}
WriteOutput "Ok", "Not OK?";
给出:
[19:12:01][Not Ok?]>: Ok
对于PHP中的此函数:
private function writeOutput($msg, $type) {
echo date("H\:i\:s") . " - [$type] . > $msg\n";
}
Perl提供了做同样事情的可能性:
use POSIX qw(strftime);
sub WriteOutput {
my($msg, $type) = @_;
my $date = strftime("[%H:%M:%S]", localtime);
print "$date:[$type]>: $msg";
}
WriteOutput "Ok", "Not OK?";
给出:
[19:12:01][Not Ok?]>: Ok
对不起,我完全不清楚你在问什么。也许你可以试着用不同的措辞?谢谢。php函数的工作原理如下writeOutput(“test”,“type1”)
所以我想知道是否可以用perl来完成,因为知道perl的人不需要理解php。考虑独立地解释问题。输入是什么,子例程有多少个参数?Perl有什么“不起作用”?至少,$sum
、$type
和$msg
可能来自某个地方,请参见my
。如果您只是想了解日期时间格式,请参阅以获取一些建议。很抱歉,我完全不清楚您在问什么。也许你可以试着用不同的措辞?谢谢。php函数的工作原理如下writeOutput(“test”,“type1”)
所以我想知道是否可以用perl来完成,因为知道perl的人不需要理解php。考虑独立地解释问题。输入是什么,子例程有多少个参数?Perl有什么“不起作用”?至少,$sum
、$type
和$msg
可能来自某个地方,请参见my
。如果您只想设置日期时间格式,请参阅以获取一些建议。