小编Ale*_*lex的帖子

如何在Perl中编写*filename*包含utf8字符的文件?

我正在努力创建一个包含非ascii字符的文件.

以下脚本工作正常,如果使用0as参数调用但在调用时死亡1.

错误消息已打开:C:\ temp\filename.pl第15行的参数无效.

该脚本在内部启动cmd.exe.

我希望它能写出一个名字相同的文件(取决于参数)äöü.txtäöü?.txt.但我无法创建包含笑脸的文件名.

use warnings;
use strict;

use Encode 'encode';

#   Text is stored in utf8 within *this* file.
use utf8;

my $with_smiley = $ARGV[0];

my $filename = 'äöü' . 
  ($with_smiley ? '?' : '' ).
   '.txt';

open (my $fh, '>', encode('cp1252', $filename)) or die "open: $!";

print $fh "Filename: $filename\n";

close $fh;
Run Code Online (Sandbox Code Playgroud)

我可能错过了一些对他人来说很明显的东西,但是我找不到,所以我很欣赏任何解决这个问题的指针.

windows perl filenames cmd utf-8

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

帮助理解perl中的全局标志

据我所知,perl global'/ g'标志表示搜索将替换/返回整个字符串中的所有匹配项.但我无法理解它在匹配时对全局变量的反应方式,有人可以解释为什么这两个示例程序的输出之间存在差异:

版本1:

my $text = 'This is sample float value 3.2 ';

getFloat();
getFloat();

sub getFloat(){
    if ($text =~ /([0-9]+?)(.?)([0-9]+?)/is){
        print "matched> $1$2$3 ";
    }
}
Run Code Online (Sandbox Code Playgroud)

输出: 匹配> 3.2匹配> 3.2

版本2 :(带全球标志)

my $text = 'This is sample float value 3.2 ';

getFloat();
getFloat();

sub getFloat(){
    if ($text =~ /([0-9]+?)(.?)([0-9]+?)/gis){
        print "matched> $1$2$3 ";
    }
}
Run Code Online (Sandbox Code Playgroud)

输出: 匹配> 3.2

从输出中可以看出,全局标志匹配仅发生一次.有人可以解释这种行为.

regex perl

9
推荐指数
2
解决办法
1730
查看次数

Moose和MooseX :: Declare的有用错误

麋是非常可爱的,但是从我的观点来看,有时简单的拼写错误可能导致令人兴奋的令人兴奋的长堆栈,零有用的内容.

那么,是否有任何工具可以将这种爆炸解释为有用的东西?

特别是对于使用普通Moose,Moose + MooseX :: Method :: Signatures和MooseX :: Declare的类.

这些工具只需要在开发过程中有所帮助,以捕捉那些使事情无效的错字或思考问题.

=========================

下面的建议之后,我用这个并不十分-A模块,但它减少我的头疼一点,更多的想法表示欢迎,但:

package MooseX::QuietCarping;
# Not actually a Moose thing, but helpful for Moose.
# calm Moose-internal stacktraces down a little
use Carp;

my %retain = ();
sub import {
    my $class = shift;
    $retain{$_}++ for @_;
}

CHECK {
    for (sort keys %INC) {
    s{\.pm$}{};
    s{[/\\]}{::}g; # CROSS PLATFORM MY ARSE
    next if $retain{$_};
    $Carp::Internal{$_}++ if /^(?:Class::MOP|Moose|MooseX)\b/
    }
    %retain = (); # don't need this no more …
Run Code Online (Sandbox Code Playgroud)

perl moose

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

Windows资源管理器中matlab数据的预览(将图像设置为另一个文件的缩略图的实用程序)

有没有人想出一种方法来为Windows中的matlab数字制作缩略图类预览?

我已经厌倦了将.png和.fig文件一起保存,所以我知道它里面有什么.

对此有用的辅助工具是Windows的命令行实用程序,可以提供图像文件并告知它将其用作给定文件预览的基础.

我可以在matlab中编写一个辅助函数来保存.fig,制作一个临时图像文件,然后使用命令行实用程序将其推送到缩略图中.

windows com matlab preview matlab-figure

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

将unicode字符串写入Matlab中的文件

我有一个包含urdu字符的字符串,如'بجلی',这是一个1x4数组.我想将其保存到一个文件,可以在外部查看.虽然这个字符串不会显示在主命令窗口中,但变量'str'确实存在它.当我使用fprintf(fid,str)保存它,并在记事本中打开该文件时,会在原始字符上显示"箭头".我可以轻松地将我的角色粘贴到记事本中.问题出在哪儿?

unicode matlab utf-8

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

perl中的高效子字符串匹配

我正在寻找一个有效的解决方案,找到一个字符串中最长的子字符串,容忍主字符串中的n个不匹配

例如:主字符串

  1. AGACGTAC TACTCTACT AGATGCA*TACTCTAC*
  2. AGACGTAC TACTCTACT AGATGCA*TACTCTAC*
  3. AGACGTAC TACTCTACA AGATGCA*TACTCTAC*
  4. AGACGTAC TACTTTACA AGATGCA*TACTCTAC*

搜索字符串:

  1. TACTCTACT:这应该被认为是对所有上述主要字符串的匹配.

另外我可能会遇到子串的一部分位于主字符串末尾的情况,我也想选择它.

如果你能给出一些指示,我将不胜感激.

PS:我将有一个搜索字符串和大约1亿个主字符串来搜索子字符串.

谢谢!-Abhi

string perl substring string-matching bioperl

7
推荐指数
2
解决办法
1716
查看次数

在MATLAB中用alpha值绘制圆圈

我创建了一些数据的散点图,因为你做的,我有一些我想绘制为圆一些的α值重复的数据点,以便在同一位置打桩的加分是显而易见的.

据我所知,你无法设置你生成的小圆圈的alpha属性plot(x, y, 'o'),所以我使用patch()自己绘制了数千个小圆圈:

x = repmat([1:10], [1 10]);
y = round(10*rand(100, 1))/10;
xlim([0 11])
ylim([0 1])
p = ag_plot_little_circles(x', y, 10, [1 0 .4], 0.2);

function p = ag_plot_little_circles(x, y, circle, col, alpha)
%AG_PLOT_LITTLE_CIRCLES Plot circular circles of relative size circle
% Returns handles to all patches plotted

    % aspect is width / height
    fPos = get(gcf, 'Position');
    % need width, height in data values
    xl = xlim();
    yl = ylim();
    w = circle*(xl(2)-xl(1))/fPos(3);
    h …
Run Code Online (Sandbox Code Playgroud)

matlab

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

在Mac OSX上安装JSON :: XS

我希望你已经准备好通过我的挫折进行长时间的冒险:

我在Mac OSX上使用Perl 5.10:Snow Leopard,使用XCode 3.2.6.

我想要做的是在程序中使用模块JSON :: XS.

这是我第一次用Perl做过一些事情,所以我查看一些简单的示例程序并试用它们,它们都可以工作.然后我去使用JSON :: XS.我明白了:

Can't locate JSON/XS.pm in @INC (@INC contains: /Library/Perl/Updates/5.10.0 /System/Library/Perl/5.10.0/darwin-thread-multi-2level /System/Library/Perl/5.10.0 /Library/Perl/5.10.0/darwin-thread-multi-2level /Library/Perl/5.10.0 /Network/Library/Perl/5.10.0/darwin-thread-multi-2level /Network/Library/Perl/5.10.0 /Network/Library/Perl /System/Library/Perl/Extras/5.10.0/darwin-thread-multi-2level /System/Library/Perl/Extras/5.10.0 .) at part1.pl line 5.
BEGIN failed--compilation aborted at part1.pl line 5.
Run Code Online (Sandbox Code Playgroud)

我做一些谷歌搜索,并认为它需要安装.同样在我的谷歌搜索中,我发现使用cpanm的重要建议.所以我首先尝试使用cpan(我已经拥有)安装cpanm.

我得到一个很长的打印输出,基本上说不,不行,"成功的机会有限",并且一遍又一遍地失败.它的全部内容太长了,但我觉得有趣的是:

Warning (usually harmless): 'YAML' not installed, will not store persistent state
Running make test
Can't test without successful make
Running make install
Make had returned bad status, install seems impossible
Could not read '/Users/danielgierl/.cpan/build/ExtUtils-ParseXS-3.15-VSmBrZ/META.yml'. Falling back to …
Run Code Online (Sandbox Code Playgroud)

macos perl perl-module

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

如何在每行之前用文件名打印文件内容?

我有几个文件,比如,a,b,c,我想要的东西

 > cat a b c
Run Code Online (Sandbox Code Playgroud)

但是在a的开头是"a"."b",在b行的开头,"c",在c行的开头.我可以用python做到这一点:

#!/bin/env python

files = 'a b c'

all_lines = []
for f in files.split():
  lines = open(f, 'r').readlines()
  for line in lines:
    all_lines.append(f + ',' + line.strip())

fout = open('out.csv', 'w')
fout.write('\n'.join(all_lines))
fout.close()
Run Code Online (Sandbox Code Playgroud)

但我更喜欢在命令行中执行此操作,将一些简单的命令与管道组合在一起 运营商.

有没有一种简单的方法来实现这一目标?

谢谢.

python bash scripting perl sed

5
推荐指数
2
解决办法
958
查看次数

标量值错误(使用IO :: Socket)

这是我目前的代码:

#!/usr/bin/perl -w

use strict;
require IO::Socket;

while (<>) {
        chomp(my $host = $_);
        my @header;

        print "Connecting to: $host\n";
        my $socket = new IO::Socket::INET(
                PeerAddr => $host,
                PeerPort => 80,
                Proto => 'tcp') || print "Could not connect: $!\n";

        print "Connected.\n";

        print $socket "GET / HTTP/1.0\n\n";
        my $i = 0;
        while (<$socket>) {
                @header[$i] = $_;
                $i++;
        }

        $i = 0;
        print "--------------------------------------\n";
        while ($i <= 8) {
                print "@header[$i++]";
        }

        print "-------------------------------------\n";
        print "Finished $host\n\n";
}
Run Code Online (Sandbox Code Playgroud)

如果在浏览IP列表时,主机已关闭,而不是继续到下一个IP,它将给出一个错误"不能使用字符串("1")作为符号引用,而"严格引用"使用".

如果我然后更改@header …

perl

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

Windows:孩子死亡时的通知(崩溃或正常退出)

我试图弄清楚子进程(在 Windows 上使用 CreateProcess() 创建)何时崩溃或正常退出。我正在将 Unix 代码移植到 Windows 并且对此有很多问题。

我在 Unix 上使用 SIGCHLD,如下所示:

struct sigaction act;
bzero(&act, sizeof(act));
act.sa_handler = sig_handler;
act.sa_flags = SA_RESTART;
sigaction(SIGCHLD, &act, 0);

void sig_handler(int signal)
{
    int pid, status;

    if (signal == SIGCHLD) {
        while ((pid = waitpid(-1, &status, WNOHANG)) > 0) {
            // Remove pid from a data structure
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在研究创建一个调用 WaitForMultipleObjects 的新线程的解决方案,但问题是可以随时创建新进程,我认为在创建新进程时我不能中断 WaitForMultipleObjects。我不想为每个具有 WaitOnSingleObject 的进程生成一个新线程(如果必须的话,我更愿意引入一个线程)。

请问在这种情况下最好的解决方案是什么?

windows process

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

具有NaN值的xcorr(用于自相关)

我想自动更新一些数据,但它有一些缺失的值,有没有快速的方法在matlab中做到这一点?如果任何输入是NaN,则xcorr返回NaN数组.

例如

data = [1 2 3 4 NaN 2 3 4 1 2 3 4];
xc = xcorr(data, 'biased');
Run Code Online (Sandbox Code Playgroud)

matlab correlation

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

父子Perl数据结构

我有一个数据文件,其中包含表示河流流量关系的配对值列表.

该文件具有此结构

Node       Downstream Node
A          B
B          C
C          D
E          C

etc
Run Code Online (Sandbox Code Playgroud)

我需要做的是读取此文件,然后对于任何给定节点,我需要打印所有的UPSTREAM节点.

在上面的例子中,如果我输入C,我会得到E,B,A.

我在Linux机器上使用perl,我写这篇文章的人也是.谢谢.

perl directed-graph data-structures

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