小编cjm*_*cjm的帖子

我将什么传递给.emacs文件中的switch-to-buffer参数?

我在以下行的.emacs文件中收到错误:

(switch-to-buffer *Completions*)
Run Code Online (Sandbox Code Playgroud)

错误:符号值作为变量是无效的

我做了describe-functionswitch-to-buffer,发现我可以通过它的缓冲区(和我目前并不需要另一个可选参数).我究竟做错了什么?

只是几个笔记:
a.我还需要两条相似的线路(switch-to-buffer *grep*),(switch-to-buffer *compilation*)所以使用简单的解决方案(switch-to-completions)并不能解决我的所有问题.
湾 我需要的所有缓冲区都已打开,所以我不认为这是问题所在.

emacs elisp dot-emacs

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

Perl和MIME :: Lite - 为什么我的.txt附件是空白的?

我一直在使用MIME :: Lite一段时间,直到现在都没有问题.

我正在尝试附加.txt文件,但文件(发送后)内部没有内容.

我知道文件中有一些东西,因为我.txt在同一个脚本中创建文件.我知道文件的位置并且可以看到它的内容,但是当我告诉MIME::Lite附加.txt文件时,电子邮件只带有文件名,只有64个字节.

MIME::Lite是我的脚本部分的代码:

$msg = new MIME::Lite(From => $from,To => $to,Subject => $subject,Data => "Data",Type => "multipart/mixed",); 
$msg->attach(Type => 'TEXT', Data => @message);
$msg->attach(Type => 'TEXT', Path => $stat_file);
$msg->send();
Run Code Online (Sandbox Code Playgroud)

哪里$stat_file=/in/some/dir/cheese/txt/somefile.txt

除了第3行外,一切正常.它正确地找到并附加我指向的文件,但当它到达我的电子邮件时,它是一个.txt64字节的空白文件.

我已经尝试了这个代码的前3行中的每一行的几个变体,但不知道我错过了什么.

有人看到这个脚本会按照解释的那样执行的原因吗?

perl mime file text-files email-attachments

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

为什么在BUILD中修改Moose类会导致此错误?

使用时我遇到与此Moose相关的错误BUILD.当我改变BUILDALL它似乎工作.注意使用Class::MOP::load_class

运用 BUILD

Perl version: 5.012002
Class::MOP::Version: 1.11
Moose::Version: 1.24
Applying fixup GV::WebServer::Fixups::Development
aflott-g3 at a.pl line 83.
Error: trying to call refresh() in GV::WebServer::Fixups::Development produced: The     'add_attribute' method cannot be called on an immutable instance at /opt/cidc-perl/perl-5.12.2/lib/perl5/x86_64-linux/Class/MOP/Class/Immutable/Trait.pm line 32
        Class::MOP::Class::Immutable::Trait::_immutable_cannot_call('add_attribute') called at /opt/cidc-perl/perl-5.12.2/lib/perl5/x86_64-linux/Class/MOP/Class/Immutable/Trait.pm line 37
        Class::MOP::Class:::around('CODE(0x13a2e028)', 'Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0x13d58...', 'architecture', 'is', 'ro', 'isa', 'Str', 'lazy', 1, ...) called at /opt/cidc-perl/perl-5.12.2/lib/perl5/x86_64-linux/Class/MOP/Method/Wrapped.pm line 159
        Class::MOP::Method::Wrapped::__ANON__('Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0x13d58...', 'architecture', 'is', 'ro', 'isa', 'Str', 'lazy', 1, 'default', ...) called at /opt/cidc-perl/perl-5.12.2/lib/perl5/x86_64-linux/Class/MOP/Method/Wrapped.pm line …
Run Code Online (Sandbox Code Playgroud)

perl moose

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

Perl语法错误,但我找不到它的生命

这个错误激怒了我.我在括号错误或缺少括号的行附近看不到任何内容.有人帮我一把吗?这是我的第一篇文章,如果格式化关闭,请原谅我; 我想我做对了.

编辑:第87行,');' 错误,就是这一行:select(SEXTANT_DAEMON_LOG);

syntax error at -edited- line 87, near ");"
syntax error at -edited- line 92, near "if"
syntax error at -edited- line 99, near "if"
Unmatched right curly bracket at -edited- line 102, at end of line
syntax error at -edited- line 102, near "}"
syntax error at -edited- line 109, near "}"
syntax error at -edited- line 120, near ");"
BEGIN not safe after errors--compilation aborted at -edited- line 122.
Run Code Online (Sandbox Code Playgroud)

这是错误附近的代码(这里是完整代码):

$MAIN_DBH = getConnection('Main'); …
Run Code Online (Sandbox Code Playgroud)

perl syntax-error

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

Perl中的非本地返回(从调用者返回)

有没有办法让我我的来电者返回而不是我的来电者?例如

sub foo {
    bar();
    # this never gets executed
}

sub bar {
    return_from_caller(5);
}

# This prints 5
print foo();
Run Code Online (Sandbox Code Playgroud)

(理由:我正在编写一个函数memoize_self,它在函数本身内记忆一个函数.我希望它能像这样工作:

sub complex_function {
    my ($x, $y) = @_;
    memoize_self({key => $y, expires_in => '5min'));
    # compute $result
    return $result;
}
Run Code Online (Sandbox Code Playgroud)

memoize_self将检查自己的缓存,如果它得到一击,返回缓存值它的调用者.否则,它将重新调用该函数(使用动态范围的var来避免明显的无限循环),将返回值存储在缓存中并再次返回它.

如果没有从调用者返回的能力,我可能会使用$ _并以这种方式编写它:

return $_ if memoize_self({key => $y, expires_in => '5min'));
Run Code Online (Sandbox Code Playgroud)

但这是额外的噪音,也没有考虑上下文.)

编辑:对合理建议Memoize的人 - 是的,我应该说,我很了解这个模块.我正在编写一个基于CHI的更现代和功能更强的Memoize版本.

但作为涉及到这个问题,有些情况下是非常有用的,以memoize的案件的作用,而不是外界的功能(memoize的只做后者).它可以轻松自定义缓存键和/或确定是否要为此特定调用进行任何记忆.例如

sub complex_function {
    my $key = ...; …
Run Code Online (Sandbox Code Playgroud)

perl

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

如何通过引用来更改Perl变量?

为什么打印8?为什么不$e改变$i

my $i = 8;

sub u
{
    return \$i;
}

my $e = u();
$e = "eer";
print $i; #8
Run Code Online (Sandbox Code Playgroud)

perl reference

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

Perl int to array

我有一个存储在Perl变量中的数字,我想在数组的不同位置"传递/转换/存储"它的数字.更好看的一个例子:

比方说,我有这个数字存储:

$hello = 429384
Run Code Online (Sandbox Code Playgroud)

我需要一个包含数字的新数组,所以:

$hello2[0] = 4
$hello2[1] = 2
$hello2[2] = 9
Etc..
Run Code Online (Sandbox Code Playgroud)

我可以使用几个循环来实现它,但我想知道是否有一种有效且快速的方法.Thx提前!

perl

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

为什么一个常数中有两个@符号?

我正在阅读GitHub上的CIF(Collective Intelligence Framework)源代码

在文件中src/lib/CIF/Generated.pm.in我看到了这样的声明

use constant PROTOCOL_VERSION   => @CIF_PROTOCOL_VERSION@;
Run Code Online (Sandbox Code Playgroud)

为什么有两个标志 @

package CIF;

use warnings;
use strict;

use constant VERSION =>    '@CIF_VERSION_MAJOR@.@CIF_VERSION_MINOR@.@CIF_VERSION_PATCH@@CIF_VERSION_META@';
our ($MAJOR_VERSION, $MINOR_VERSION, $PATCH, $META) = VERSION =~ /^(\d+)\.(\d+)\.(\d+)-?([\w\.\d]+)?$/;

use constant PROTOCOL_VERSION   => @CIF_PROTOCOL_VERSION@;
use constant ORG                => '@ORG@';
use constant DEFAULT_PORT       => @DEFAULT_PORT@;

use constant DEFAULT_FRONTEND_PORT          => DEFAULT_PORT();
use constant DEFAULT_BACKEND_PORT           => (DEFAULT_PORT() + 1);
use constant DEFAULT_PUBLISHER_PORT         => (DEFAULT_PORT() + 2);
use constant DEFAULT_STATS_PUBLISHER_PORT   => (DEFAULT_PORT() + 3);

our …
Run Code Online (Sandbox Code Playgroud)

perl autoconf constants

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

用于修改散列引用数组中的值的简写

我有一个哈希引用数组.散列中的日期字段存储在纪元中.在返回数组之前,我必须将其格式化为人类可读.以下是我的代码:

for my $post (@sorted) {
        $post->{date} = format_time($post->{date});
        push @formatted, $post;
}
Run Code Online (Sandbox Code Playgroud)

我试过了

my @formatted =  map {$_{date} = format_time($_{date})} @sorted;
Run Code Online (Sandbox Code Playgroud)

除{日期}之外的所有字段都将被删除.

有更聪明的方法吗?

谢谢

arrays perl hash

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

如何在使用HTML :: Tree解析后将数据标记为UTF-8?

我写了一个脚本,我在UTF-8编码的HTML文件中啜饮,然后将其解析为树HTML::Tree.问题是解析后的字符串不再标记为UTF-8.

由于_utf8_on()不建议设置标志的方式,我正在寻找正确的方法.

我的简化代码示例:

#!/usr/bin/perl

use strict;
use warnings;
use 5.010;
use utf8::all;
use autodie;
use HTML::Tree;
use Encode qw/is_utf8/;

my $file = shift;
my $tree;

if ($file) {
    my $content = slurp_in( 'file' => $file );
    $tree = html_tree('content' => $content);
} else {
    die "no file";
}

my $title = $tree->look_down(_tag => 'title');
$title = $title->as_HTML('');

if ( is_utf8( $title ) ) {
    say "OK: $title";
} else {
    say "NOT OK: $title";
}

## …
Run Code Online (Sandbox Code Playgroud)

perl utf-8 html-parsing html-tree

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