写输出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

我正在尝试制作一个类似于这个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 = 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
使用警告。然后,您必须使用
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
使用警告。然后,您必须使用
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
。如果您只想设置日期时间格式,请参阅以获取一些建议。