小编Eth*_*her的帖子

How to write from n-th row to a file using perl

I have a source text in a file and looking for a code that would take the second (or n-th - in general) row from this file and print to a seperate file.

Any idea how to do this?

perl

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

如何将PHP函数转换为非函数?

如何将下面的代码中的PHP函数转换为非函数.

<?php
require_once ('./mysqli_connect.php'); // Connect to the db.

function make_list ($parent)
{
    global $tasks;
    echo '<ol>';
    foreach ($parent as $task_id => $todo)
    {
        echo "<li>$todo";
        if (isset($tasks[$task_id]))
        { 
            make_list($tasks[$task_id]);
        }
        echo '</li>';
    }

    // Close the ordered list:
    echo '</ol>';
}

$mysqli = new mysqli("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"SELECT task_id, parent_id, task FROM tasks WHERE date_completed='0000-00-00 00:00:00' ORDER BY parent_id, date_added ASC");

if (!$dbc)
{
    // There was an error...do something about it here...
    print mysqli_error();
} …
Run Code Online (Sandbox Code Playgroud)

php refactoring

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

使用Unix工具提取字符串值

我写了一个小的Perl脚本来从给定键名的JSON格式字符串中提取所有值(如下所示).因此,如果我将Perl脚本的命令行开关设置为id,那么它将从下面的JSON示例返回1,2和stringVal.这个脚本完成了这项工作,但我想看看其他人如何使用其他unix样式工具(如awk,sed或perl本身)来解决同样的问题.谢谢

{
   "id":"1",
   "key2":"blah"
},
{
   "id":"2",
   "key9":"more blah"
},
{
   "id":"stringVal",
   "anotherKey":"even more blah"
}
Run Code Online (Sandbox Code Playgroud)

摘录提取JSON值的perl脚本:

my @values;
while(<STDIN>) {
    chomp;
    s/\s+//g; # Remove spaces
    s/"//g; # Remove quotes
    push @values, /$opt_s:([\w]+),?/g; # $opt_s is a command line switch for the key to find
}

print join("\n",@values);
Run Code Online (Sandbox Code Playgroud)

unix linux perl awk json

0
推荐指数
2
解决办法
1338
查看次数

Perl中的智能RegEx?

背景


考虑以下输入:

<Foo
    Bar="bar"
    Baz="1"
    Bax="bax"
>
Run Code Online (Sandbox Code Playgroud)

处理完毕后,我需要它看起来如下所示:

<Foo
    Bar="bar"
    Baz="1"
    Bax="bax"
    CustomAttribute="TRUE"
>
Run Code Online (Sandbox Code Playgroud)

履行


这是所有我需要的时间不超过5个文件做的,所以使用以外的任何其他正则表达式似乎有点小题大做.无论如何,我想出了以下(Perl)正则表达式来完成这个:

$data =~ s/(<\s*Foo)(.*?)>/$1$2 CustomAttribute="TRUE">/sig;
Run Code Online (Sandbox Code Playgroud)

问题


这很好,但是,有一个明显的问题.这种模式是"愚蠢的",因为如果CustomAttribute已经添加,上面概述的操作将简单地附加另一个CustomAttribute=....

当然,一个简单的解决方案是编写一个辅助表达式,它将CustomAttribute在运行替换操作之前尝试匹配.

问题


因为我对脚本语言和正则表达式世界都很陌生,所以我想知道是否有可能在不引入任何宿主语言结构(即Perl中的if语句)的情况下解决这个问题,并且只是使用更"智能" "我上面写的版本?

html regex perl parsing

0
推荐指数
2
解决办法
240
查看次数

如何在Perl中阅读使用POST发送的URL-Data?

我正在尝试读出从页面中的表单发送到我的Perl脚本的POST数据.我用Google搜索并发现:

read(STDIN, $param_string, $ENV{'CONTENT_LENGTH'})
Run Code Online (Sandbox Code Playgroud)

读取整个Data-String,并以.的形式将整个字符串写入$ param_string

Param1=Value1&Param2=Value2&Param3=Value3
Run Code Online (Sandbox Code Playgroud)

通过将它拆分到正确的位置,我得到了必要的数据.

但我想知道为什么我的$ param_string是空的.

当我用GET尝试整个事情时:

$param_string = $ENV{'QUERY_STRING'};
Run Code Online (Sandbox Code Playgroud)

一切正常.有人有想法吗?

forms perl post cgi query-string

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

堆栈溢出技术

int main(void) {
   problem2();
}

void doit2(void) {
    int overflowme[16];
    //overflowme[37] =0;
}

void problem2(void) {
    int x = 42;
    doit2();
    printf("x is %d\n", x);
    printf("the address of x is 0x%x\n", &x);
}
Run Code Online (Sandbox Code Playgroud)

有人会帮我理解为什么溢出[37] = 0; 从doit2函数将覆盖x的值?(请在说明中包含函数doit2的程序计数器和帧指针)谢谢!

它每次都在x86 windows机器上工作(好吧!),项目属性 - >配置属性 - > C/C++ - >代码生成 - >基本运行时检查设置为"默认".所以这不是一个未定义的行为.

c stack-overflow

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

Perl:获取在cgi-bin脚本中使用stdin的句柄

在Windows服务器上使用perl 5.8.8我正在编写一个perl cgi脚本,使用Archive :: Zip来创建一个必须由用户下载的zip:这方面没有问题.zip在内存中管理,没有物理文件使用临时文件或其他任何内容写入磁盘.我想知道如何允许zip下载将流写入浏览器.我做的是这样的:

binmode (STDOUT);
$zip->writeToFileHandle(*STDOUT, 0);
Run Code Online (Sandbox Code Playgroud)

但我觉得这种方式不安全,将STDOUT作为文件句柄.它是否正确且稳健?有一个更好的方法?

非常感谢您的建议

perl filehandle

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

标签 统计

perl ×5

awk ×1

c ×1

cgi ×1

filehandle ×1

forms ×1

html ×1

json ×1

linux ×1

parsing ×1

php ×1

post ×1

query-string ×1

refactoring ×1

regex ×1

stack-overflow ×1

unix ×1