我的网络应用程序mod_perl使用CGI :: Application 在Apache上运行.我想提供生成文件的下载.在过去(在我们使用mod_perl和CGI :: App之前)我只是假设一个csv文件STDOUT生成它.现在我正在进行一些改进 - 使用Spreadsheet :: WriteExcel创建一个Excel电子表格 - 我似乎无法从文件句柄中打印出来.
sub export_list {
my $self = shift;
binmode(STDOUT);
my $str;
open my $fh, '>', \$str;
my $workbook = Spreadsheet::WriteExcel->new($fh);
my $worksheet = $workbook->add_worksheet();
$worksheet->write_col(0,0, ['some','data','here']);
warn $str;
return $str;
}
Run Code Online (Sandbox Code Playgroud)
输出只是一个空白响应,警告也是空白.
我用来将电子表格写入文件句柄的方法非常直接来自文档,所以我认为问题是由于我的一些CGI :: App noobery.文档建议的文件句柄方法,并mod_perl证明也没有结果.
我想我应该提一下我在Windows上运行,而我目前的解决方法是创建一个文件并为用户提供一个链接.然而,这会带来更多问题,例如清除目录以及何时执行此操作,以及访问生成的文件的身份验证.
建议?尖刻的批评?
我通过调用向中心区域的选项卡面板添加了一个按钮
var add = tabSelection.addButton({
id : 'add',
text : 'Add',
hidden : true,
tooltip : 'Please highlight the correct value and click Add to create new contact',
handler : addContact
});
Run Code Online (Sandbox Code Playgroud)
西部地区有两个带有手风琴布局的单选按钮,标有"内部"和"外部".我希望通过捕获单选按钮单击动态更改工具提示.
我可以捕获单选按钮单击,当我相应地设置按钮的工具提示时,
add.setToolTip('Please highlight the correct value and click Add to create new internalcontact');如果单击内部客户端.
add.setToolTip('Please highlight the correct value and click Add to create new external contact');当点击外部时.
this.getUrl = 'test';
this.items.add(
new Ext.form.Checkbox(
{
listeners: {
check: function(checkbox, checked) {
alert(this.getUrl);
},
}
)
)
Run Code Online (Sandbox Code Playgroud)
如何this.getUrl在检查处理程序中访问?
perl -p -i.bak -e 's/search_str/replace_str/g' filename
Run Code Online (Sandbox Code Playgroud)
是什么-p,-i.bak s/以及/g是什么意思?
我有一个带有分页工具栏的Extjs Grid.我需要为分页数据时发出的每个请求传递服务器自定义参数.我已经尝试在商店加载事件中设置参数,但是当点击下一个按钮时,传呼机似乎不记得用于加载商店的最后选项.
这是一些代码:
var sourceGrid = new Ext.grid.EditorGridPanel({
region: 'center',
title: localize.sourceView,
store: sourceStore,
trackMouseOver: true,
disableSelection: false,
loadMask: true,
stripeRows: true,
autoExpandColumn: "label",
// grid columns
columns: [
{ header: 'ID', dataIndex: 'id', width: 50, hidden: true, sortable: true },
{ header: 'Language ID', dataIndex: 'languageID', width: 50, hidden: true, sortable: true },
{ header: 'Language', dataIndex: 'language', width: 20, hidden: true, sortable: true },
{ header: 'Key ID', dataIndex: 'keyID', width: 30, hidden: true, sortable: true },
{ …Run Code Online (Sandbox Code Playgroud) 我有一系列哈希.我想要根据另一个键的唯一性在这些哈希的键中列出值.
my @obs = ({
value => 'three',
id => 3
},{
value => 'one-2',
id => 1
},{
value => 'one',
id => 1
});
# This works, prints "one\nthree"
say for values %{{ map { $_->{id} => $_->{value} } @obs }};
Run Code Online (Sandbox Code Playgroud)
我可以避免参考+解除引用位map吗?起初我尝试直接调用values返回,map但Perl不会拥有它:
arg 1到values的类型必须是在脚本\ workbench.pl第55行的哈希(不是map迭代器),靠近"@obs;"
我有一堆名称类似于"Itemtype#"的记录,当它们被输出到树视图中时,它们的排序不正确,如下所示:
我的模型字段定义如下,我在"名称"上排序:
fields: [
{ name: 'Id', defaultValue: 0, type: 'int', mapping: 'Id' },
{ name: 'Name', defaultValue: '', type: 'string', mapping: 'Name', sortType: Ext.data.SortTypes.asUCString },
{ name: 'Type', defaultValue: 0, type: 'int', mapping: 'Type' },
{ name: 'CreationDate', type: 'date', mapping: 'CreationDate' }
],
Run Code Online (Sandbox Code Playgroud)
任何人都能指出我正确的方向吗?我正在使用extjs 4.0.5
在挖掘一些旧的源代码时,我看到了以下内容:
my $module = $some{module};
eval "require $module";
die "Bad module\n$@" if $@;
Run Code Online (Sandbox Code Playgroud)
当我理解代码的作用时,它会尝试"需要"一个模块并在它不成功时死掉 - perlcritic抱怨它
第31栏第13栏"eval"的表达形式.参见PBP第161页.(严重程度:5)
不幸的是我没有PBP书,所以想知道上面的正确方法是什么...
此外,在相同的来源发现:
sub test_repo_file {
my($self, $repo, $test) = @_;
my $abspath = repo_abs_path($repo);
return "eval -$test $abspath";
}
Run Code Online (Sandbox Code Playgroud)
这里不明白什么解决了"eval",并且perlcritic再次抱怨"字符串评估"......
有人可以解释关于"字符串评估"的基本要点以及如何正确编写上述内容吗?
我有黑客需要在这些条件下使用:
所以我尝试了这段代码:
my $use_hack =
$last_page_number == $current_page_number and
$page_number != 1 and
$total_items % $items_per_page != 0;
Run Code Online (Sandbox Code Playgroud)
而且我不断收到Useless use of numeric ne (!=) in void context关于最后一个条件的警告,它正在评估时间$total_items % $items_per_page = 0.
say 'NOT EVEN' if $total_items % $items_per_page != 0; #works properly, though...
Run Code Online (Sandbox Code Playgroud)
我已经尝试了各种括号组合来使它正确,但似乎没有任何效果.
我正在为现有的数据库结构开发一个大型的Class :: DBI实现,并且遇到了从Class :: DBI清除缓存的问题.这是一个mod_perl实现,因此类的实例在访问它的时间之间可能相当老.从手册页中我发现了两个选项:
Music::DBI->clear_object_index();
Run Code Online (Sandbox Code Playgroud)
和:
Music::Artist->purge_object_index_every(2000);
Run Code Online (Sandbox Code Playgroud)
现在,当我将clear_object_index()添加到DESTROY方法时,它似乎运行,但实际上并没有清空缓存.我能够手动更改数据库,重新运行请求,它仍然是旧版本.purge_object_index_every表示它会在每n个请求中清除索引.将其设置为"1"或"0",似乎有时会清除索引.我希望这两个中的一个能够工作,但由于某些原因它不会每次都这样做.更像是5次中的1次.
清除这个的任何建议?
还行吧:
$foo++ if $condition;
Run Code Online (Sandbox Code Playgroud)
这没关系:
$foo++ for (1..10);
Run Code Online (Sandbox Code Playgroud)
但这不是:
$foo++ if $condition for (1..10);
Run Code Online (Sandbox Code Playgroud)
如果事情并不复杂,我发现后者非常易读,而且它适用于一行!有没有办法做到这一点,还是我应该继续我的生活?
我有一个连接到MS Exchange服务器的IMAP客户端(Perl,Mail :: IMAPClient),该服务器在登录时收到错误"在无效状态下收到1个BAD命令".这个相同的IMAP客户端在许多其他环境中工作,没有错误,当然在登录时不会立即出错!
我无法确定错误的来源,此时我倾向于认为客户的Exchange服务器配置错误,或者有一些防火墙或数据包操作恶作剧正在进行中.
除了错误之外,我能够进行真正看起来正常的数据包捕获.在TCP握手之后,这是整个IMAP会话,然后是TCP挂断.
No. Time Source Destination
4 0.010228000 (server) (client)
Internet Message Access Protocol
Line: * OK The Microsoft Exchange IMAP4 service is ready.\r\n
No. Time Source Destination
5 0.012680000 (client) (server)
Internet Message Access Protocol
Line: 1 LOGIN (username) (password)\r\n
Request Tag: 1
Request Command: LOGIN
Request: LOGIN (username) (password)
No. Time Source Destination
6 0.017559000 (server) (client)
Internet Message Access Protocol
Line: 1 BAD Command received in Invalid state.\r\n
Response Tag: 1
Response Status: …Run Code Online (Sandbox Code Playgroud) perl ×7
extjs ×4
extjs4 ×2
syntax ×2
apache ×1
button ×1
class-dbi ×1
dereference ×1
download ×1
email ×1
extjs3 ×1
grid ×1
idioms ×1
imap ×1
javascript ×1
mod-perl ×1
pagination ×1
perl-critic ×1
tooltip ×1