小编xxf*_*xxx的帖子

Perl模块用法

我想在/ 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)

perl perl-module

8
推荐指数
1
解决办法
1701
查看次数

bash + for循环+输出索引号和元素

这是我的阵列:

$ 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)

arrays bash printf

8
推荐指数
2
解决办法
2万
查看次数

可以将BiFunction引用传递给期望功能接口的方法吗?

我一直只使用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?

那里的问题的答案建议完全按照引用的段落说你做不到的.

那么,文章中的信息是不正确的,还是我在这里读错了?

谢谢!

java lambda java-8 bifunctor

7
推荐指数
1
解决办法
7826
查看次数

NGINX未在Amazon EC2实例上显示默认页面

我在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)

linux nginx amazon-ec2

7
推荐指数
1
解决办法
2604
查看次数

如何使用Perl的WWW :: Mechanize从超时中恢复?

我正在使用WWW :: Mechanize来读取每隔几秒运行一次的循环中的特定网页.偶尔,'GET'超时并且脚本停止运行.如何从一个这样的超时恢复,以便它继续循环并在下一次尝试'GET'?

perl www-mechanize

5
推荐指数
1
解决办法
1696
查看次数

将数据框添加到现有的 rdata 文件

我对 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)

但这似乎不起作用?

r

5
推荐指数
1
解决办法
1876
查看次数

\&和$ expr的用法是什么 - >()

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

3
推荐指数
1
解决办法
2116
查看次数

从Perl中的DateTime获取两位数的月份和日期

您好,我正在使用 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,是否有更简洁的方法来获取两位数的月份/日期,而无需在数字前加上零?

perl datetime

3
推荐指数
2
解决办法
1570
查看次数

在perl中初始化哈希是否可选?

$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

perl

2
推荐指数
1
解决办法
85
查看次数

使用perl分割空格

我有这行代码来分割文本文件中的空格:

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)

有人可以告诉我,正则表达式有什么问题,还是有其他方法可以做到这一点? …

regex perl

2
推荐指数
1
解决办法
885
查看次数