我想在/ usr/local/lib/perl中创建自己的Perl模块
我有环境变量PERL5LIB设置:
$ env | grep PERL
PERL5LIB=/usr/local/lib/perl
Run Code Online (Sandbox Code Playgroud)
如果我创建一个模块:$ PERL5LIB/My/ModuleTest.pm
$ ./test.pl
Can't locate object method "new" via package "My::ModuleTest" (perhaps you forgot to load "My::ModuleTest"?) at ./test.pl line 8.
Run Code Online (Sandbox Code Playgroud)
test.pl:
#!/usr/bin/perl
use strict;
use warnings;
use My::ModuleTest;
my $test = new My::ModuleTest;
print $test->check;
Run Code Online (Sandbox Code Playgroud)
ModuleTest.pm:
package ModuleTest;
use strict;
use warnings;
sub new {
my $class = shift;
my ($opts)= @_;
my $self = {};
$self->{test} = "Hello World";
return bless $self, $class;
}
sub check {
my …Run Code Online (Sandbox Code Playgroud) 这是我的阵列:
$ ARRAY=(one two three)
Run Code Online (Sandbox Code Playgroud)
如何打印数组,以便输出如下:index i, element[i]使用我在下面使用的printfor for循环
1,one
2,two
3,three
Run Code Online (Sandbox Code Playgroud)
一些注意事项供我参考
1种打印阵列的方法:
$ printf "%s\n" "${ARRAY[*]}"
one two three
Run Code Online (Sandbox Code Playgroud)
2种打印阵列的方法
$ printf "%s\n" "${ARRAY[@]}"
one
two
three
Run Code Online (Sandbox Code Playgroud)
3种打印阵列的方法
$ for elem in "${ARRAY[@]}"; do echo "$elem"; done
one
two
three
Run Code Online (Sandbox Code Playgroud)
4种打印阵列的方法
$ for elem in "${ARRAY[*]}"; do echo "$elem"; done
one two three
Run Code Online (Sandbox Code Playgroud)
一种看待阵列的方式
$ declare -p ARRAY
declare -a ARRAY='([0]="one" [1]="two" [2]="three")'
Run Code Online (Sandbox Code Playgroud) 我一直只使用Java 6,现在正赶上学习Java 8中的新功能.我在这里阅读这篇文章:http: //www.drdobbs.com/jvm/lambda-expressions-in-java-8/240166764?PGNO = 2
它说:
Java API在java.util.function包中定义了几个通用的功能接口.其中一个接口BiFunction描述了参数类型为T和U且返回类型为R的函数.您可以将我们的字符串比较lambda保存在该类型的变量中:
BiFunction<String, String, Integer> comp
= (first, second) -> Integer.compare(first.length(), second.length());
Run Code Online (Sandbox Code Playgroud)
但是,这对排序没有帮助.没有需要BiFunction的Arrays.sort方法.如果您以前使用过函数式编程语言,您可能会发现这很奇怪.但对于Java程序员来说,这很自然.Comparator之类的接口具有特定目的,而不仅仅是具有给定参数和返回类型的方法.Java 8保留了这种风格.当您想要使用lambda表达式执行某些操作时,您仍然需要牢记表达式的用途,并为其提供特定的功能接口.
但是,当我看到这个帖子时: 你如何在Java 8中为一个变量赋一个lambda?
那里的问题的答案建议完全按照引用的段落说你做不到的.
那么,文章中的信息是不正确的,还是我在这里读错了?
谢谢!
我在Fedora上安装了nginx.但我不知道为什么我不能通过浏览器请求服务器IP来获取默认的nginx页面.我的请求因超时而下降.
但是nginx正在运行.
$ sudo service nginx status
nginx (pid 20372) is running...
Run Code Online (Sandbox Code Playgroud)
我的默认生成配置是
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load …Run Code Online (Sandbox Code Playgroud) 我正在使用WWW :: Mechanize来读取每隔几秒运行一次的循环中的特定网页.偶尔,'GET'超时并且脚本停止运行.如何从一个这样的超时恢复,以便它继续循环并在下一次尝试'GET'?
我对 R 相当陌生,我会尽力让自己理解。假设我有一个包含多个对象的现有 rdata 文件。现在我想向它添加一个数据框,我该怎么做?我尝试了以下方法:
write.data.loc <- 'users/Jim/Objects'
rdataPath <- 'users/Jim/Objects.Rda'
myFile<- read.csv("myFile.csv")
loadObjects <- load(rdataPath)
save(loadObjects,myFile,file=paste(write.data.loc,".Rda",sep=""))
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用?
sub reduce(&@) {
my $expr = \&{shift @ARG};
my $result = shift @ARG;
while (scalar @ARG > 0) {
our $a = $result;
our $b = shift @ARG;
$result = $expr->();
}
return $result;
}
Run Code Online (Sandbox Code Playgroud)
我无法真正理解这段代码中的一些语法.有人可以向我解释一下吗?喜欢\&和$result = $expr->()
您好,我正在使用 Perl 的 DateTime 来解析字符串并将其转换为日期格式。
我的代码如下所示:
my $parser = DateTime::Format::Strptime->new( pattern => "%Y-%m-%dT%H:%M:%SZ", time_zone => 'UTC', on_error => 'croak');
my $startDate = $parser->parse_datetime("2017-04-14T21:00:00Z");
my $endDate = $parser->parse_datetime("2017-04-14T23:00:00Z");
print $startDate->month();
Run Code Online (Sandbox Code Playgroud)
当我打印月份时,我只得到 4,或者如果日期更改为小于 10 的数字,我得到一个个位数的数字。
如果数字小于 10,是否有更简洁的方法来获取两位数的月份/日期,而无需在数字前加上零?
$color_of{apple} = "red";
print $color_of{apple};
Run Code Online (Sandbox Code Playgroud)
当我甚至没有初始化哈希时,上面的代码是打印红色的.这是perl允许的吗?它会一直编译吗?
我不记得确切的代码,但是当地图未明确初始化时,我得到以下错误.
Global symbol "%map" requires explicit package name at ....
Run Code Online (Sandbox Code Playgroud)
代码链接:http://ideone.com/NJDTUj
我有这行代码来分割文本文件中的空格:
my @line_splits = split /\s+/, $ine;
Run Code Online (Sandbox Code Playgroud)
这是文本文件的一些内容:
1 2016-09-27 14:07:20.084877
2 2016-09-27 14:07:20.084998
3 2016-09-27 14:07:20.131343
4 2016-09-27 14:07:20.131374
6 2016-09-27 14:07:20.137359
7 2016-09-27 14:07:20.137556
8 2016-09-27 14:07:20.137796
9 2016-09-27 14:07:20.437769
10 2016-09-27 14:07:20.437796
100 2016-09-27 14:07:23.293661
Run Code Online (Sandbox Code Playgroud)
我的目标是获取日期和时间(我知道在$ line_splits [1]和$ line_splits [2]).
但是当我运行我的perl脚本时,从1到99的行是错误的,而在100和以上我已经得到了我想要的东西.
Time Stamp: 98 2016-09-27 --> line 98
Time Stamp: 99 2016-09-27 --> line 99
Time Stamp: 2016-09-27 14:07:23.293661 --> line 100
Time Stamp: 2016-09-27 14:07:23.299406 --> line 101
Time Stamp: 2016-09-27 14:07:23.299437 --> line 102
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我,正则表达式有什么问题,还是有其他方法可以做到这一点? …