小编pac*_*tie的帖子

Ruby 正则表达式错误

使用正则表达式运行 ruby​​ 脚本时,

s = object.value.gsub(/(\A[\s\xA0]*|[\s\xA0]*\Z)/n, '')
Run Code Online (Sandbox Code Playgroud)

有错误

invalid multibyte escape: /(\A[\s\xA0]*|[\s\xA0]*\Z)/ (SyntaxError)
Run Code Online (Sandbox Code Playgroud)

知道为什么吗?红宝石版2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]

ruby regex

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

Perl性能:为什么聪明的技巧表现更差?

我找到了一个聪明的技巧来为字符串预分配内存,但是下面的代码片段比没有技巧的情况下表现更差(通过用语句注释掉语句)vec($str, 0x100000, 8)=0;.

use Time::HiRes qw( gettimeofday );
my $big = "a" x 100;
my $str = "";
vec($str, 0x100000, 8)=0;
$ts = getTS();
for ($i=0; $i < 1000000; $i ++) {
    $str = "";
    for ($j=0; $j<100; $j++) {
        $str .= $big;
    }
}

printf "took %f secs\n", getTS() - $ts;

sub getTS {
    my ($seconds, $microseconds) = gettimeofday;
    return $seconds + (0.0+ $microseconds)/1000000.0;
}
Run Code Online (Sandbox Code Playgroud)

凭借巧妙的技巧,它需要9.1秒.如果没有巧妙的技巧,它需要7.8秒.

聪明的技巧应该更快,因为它不需要这么多realloc().知道为什么吗?

perl

0
推荐指数
1
解决办法
105
查看次数

oactve:根据简单条件修改每个元素

这里是八度新的.

我有一个矩阵X,想要更改所有元素(作为数字),如下所示:如果元素的值大于10,则将其更改为10,否则保持相同的值.

从理论上讲,我可以做两个循环并遍历每个元素.不知道有没有一种简单的方法可以做到这一点.

octave

0
推荐指数
1
解决办法
66
查看次数

在perl中更改运算符"+"的含义

perl中的"+"表示添加,在我的项目中,我们做了很多字符串连接.我知道我们可以用"."连接.运营商,如:

$x = $a . $b; #will concatenate string $a, and string $b
Run Code Online (Sandbox Code Playgroud)

但"+"感觉更好.想知道是否有魔法使下面的连接.

$x = $a + $b; 
Run Code Online (Sandbox Code Playgroud)

更好的是,如果两个变量($ a,$ b)都是数字,则检查运算符类型,然后按通常意义执行"添加",否则执行连接.

我知道在C++中,可以重载运算符.希望perl中有类似的东西.

谢谢.

perl

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

标签 统计

perl ×2

octave ×1

regex ×1

ruby ×1