我正在努力创建一个包含非ascii字符的文件.
以下脚本工作正常,如果使用0
as参数调用但在调用时死亡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)
我可能错过了一些对他人来说很明显的东西,但是我找不到,所以我很欣赏任何解决这个问题的指针.
据我所知,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
从输出中可以看出,全局标志匹配仅发生一次.有人可以解释这种行为.
麋是非常可爱的,但是从我的观点来看,有时简单的拼写错误可能导致令人兴奋的令人兴奋的长堆栈,零有用的内容.
那么,是否有任何工具可以将这种爆炸解释为有用的东西?
特别是对于使用普通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) 有没有人想出一种方法来为Windows中的matlab数字制作缩略图类预览?
我已经厌倦了将.png和.fig文件一起保存,所以我知道它里面有什么.
对此有用的辅助工具是Windows的命令行实用程序,可以提供图像文件并告知它将其用作给定文件预览的基础.
我可以在matlab中编写一个辅助函数来保存.fig,制作一个临时图像文件,然后使用命令行实用程序将其推送到缩略图中.
我有一个包含urdu字符的字符串,如'بجلی',这是一个1x4数组.我想将其保存到一个文件,可以在外部查看.虽然这个字符串不会显示在主命令窗口中,但变量'str'确实存在它.当我使用fprintf(fid,str)保存它,并在记事本中打开该文件时,会在原始字符上显示"箭头".我可以轻松地将我的角色粘贴到记事本中.问题出在哪儿?
我正在寻找一个有效的解决方案,找到一个字符串中最长的子字符串,容忍主字符串中的n个不匹配
例如:主字符串
搜索字符串:
另外我可能会遇到子串的一部分位于主字符串末尾的情况,我也想选择它.
如果你能给出一些指示,我将不胜感激.
PS:我将有一个搜索字符串和大约1亿个主字符串来搜索子字符串.
谢谢!-Abhi
我创建了一些数据的散点图,因为你做的,我有一些我想绘制为圆一些的α值重复的数据点,以便在同一位置打桩的加分是显而易见的.
据我所知,你无法设置你生成的小圆圈的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) 我希望你已经准备好通过我的挫折进行长时间的冒险:
我在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) 我有几个文件,比如,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)
但我更喜欢在命令行中执行此操作,将一些简单的命令与管道组合在一起 运营商.
有没有一种简单的方法来实现这一目标?
谢谢.
这是我目前的代码:
#!/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 …
我试图弄清楚子进程(在 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 的进程生成一个新线程(如果必须的话,我更愿意引入一个线程)。
请问在这种情况下最好的解决方案是什么?
我想自动更新一些数据,但它有一些缺失的值,有没有快速的方法在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) 我有一个数据文件,其中包含表示河流流量关系的配对值列表.
该文件具有此结构
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,我写这篇文章的人也是.谢谢.