小编Che*_*eso的帖子

Perl - 为什么班次在使用后会失去价值?

这段代码有效 - 它需要一个完整的txt文件路径数组并将它们剥离,以便在$exam_nums[$x]调用时返回文件名

for (0..$#exam_nums)
{
 $exam_nums[$_] =~ s/\.txt$//; #remove extension
 $exam_nums[$_] =~ s/$dir//g; #remove path
}
Run Code Online (Sandbox Code Playgroud)

当我尝试为单个变量执行此操作时,它不起作用.我正在调用一个子程序并向它发送一个礼物,但该变量在结尾处是空的.(它进入if语句块,因为其中的其他行运行正常.)这是代码:

打电话到子:

notify($_);
Run Code Online (Sandbox Code Playgroud)

$_是一个foreach(@files)循环,它的工作原理

子:

sub notify
{
 if(shift)
 { 
  $ex_num = shift;
  $ex_num =~ s/\.txt$//; #remove extension
  $ex_num =~ s/$dir//g; #remove path
        print $ex_num;
        print "\nanything";
 }
}
Run Code Online (Sandbox Code Playgroud)

我尝试取出$正则表达式的"删除扩展"部分,但这没有帮助.

regex variables perl shift

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

如何查看在SQL Server 2008中创建存储过程的原始SQL?

标题基本概括了所有内容.

如何查看在SQL Server 2008中创建存储过程的原始SQL?

这可能吗?我一直在网上寻找一些线索,但我要么缺少正确的白话,要么我只是寻找可以通过其他方式找到的东西.

我的基本问题是我在这里有一个SQL Server 2008数据库,有几百个存储过程,我想知道他们在做什么.我需要复制一个并稍微修改它然后使用它.

sql sql-server search stored-procedures sql-server-2008

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

Informix 7.3 - 在插入/更新时声明日期列数据类型,默认为当前日期

再次寻找你的帮助Jonathan Leffler!

我在Informix 7.3上创建一个表,需要一个时间戳字段,默认为today插入和更新.

如何为具有当前时间默认值的表定义日期/日期时间/时间戳列?

以下是简单日期字段的字段定义:

column upd_date date
    comments ""
    desc "Last update date"
    heading "Last update date"
    text "Last update date"
    attributes
 (
 )
Run Code Online (Sandbox Code Playgroud)

模式文件中还有一些其他语法可以对默认值应该是什么进行评论:

column beg_date date{DEF: date academic session/subsession officially begins}

    comments ""
    desc "Beginning date."
    heading "Beg Date"
    text "Date - Begin"
    attributes
 (
 )
Run Code Online (Sandbox Code Playgroud)

我不确定任何其他具有此功能的表格,我甚至不能100%确定它是否受支持,但如果有办法,我很乐意知道.

我在这个主题上找到的唯一好的领导就是这里

任何人有任何想法/解决方案?


更多调查结果:Informix中的
http://www.4js.com/techdocs/genero/fgl/devel/DocRoot/User/DatabaseSchema.html
投射日期

datetime我在另一个表def中找到了一个列类型:

column beg_time datetime year to minute
    comments    ""
    desc    "Beginning date and time of …
Run Code Online (Sandbox Code Playgroud)

sql informix datetime timestamp date

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

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
查看次数

在循环期间实时防止在Perl中输出重复项的最佳方法

我看到很多"相关"问题出现了,但我没有看到回答这个具体情况.

在解析从SQL select语句生成的结果集的while/for循环期间,如果前一行包含相同的字段数据(无论是第1个字段还是第1个字段),防止下一行输出的最佳方法是什么?第x场)?

例如,如果两行是:

('EML-E','jsmith@mail.com','John','Smith')
('EML-E','jsmith2@mail.com','John','Smith')
Run Code Online (Sandbox Code Playgroud)

基于'EML-E'在两行中是否相同的事实,仅打印第一行的最佳方法是什么?

现在,我这样做:

  • 将第一个字段(特定于我的场景)存储到一个2元素数组(dupecatch [1])
  • 检查dupecatch [0] = dupcatch [1](重复 - 使用's'的转义循环)
  • 处理完行后,设置dupecatch [0] = dupecatch [1]

    while ($DBS->SQLFetch() == *PLibdata::RET_OK)
    {
        $s=0; #s = 1 to escape out of inside loop
        while ($i != $array_len and $s==0)
        {
            $rowfetch = $DBS->{Row}->GetCharValue($array_col[$i]);
            if($i==0){$dupecatch[1] = $rowfetch;} #dupecatch prevents duplicate primary key field entries
            if($dupecatch[0] ne $dupecatch[1])
            {
                dosomething($rowfetch);
            }
            else{$s++;}
            $i++;
        }
        $i=0;
        $dupecatch[0]=$dupecatch[1];
    }
    
    Run Code Online (Sandbox Code Playgroud)

perl loops duplicates

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

Perl - 使用变量引用与使用变量副本推入数组

问题: 为什么我不能将元素推入一个2d数组,该数组位于解析SQL结果集的while循环中?

我需要一些帮助,为什么会发生这种情况.数据存储到二维数组的方式可以通过多种方式完成,但出于我的目的,我需要使用push方法.

这里有一些有用的代码:

my @tt = (0,1,2,3);
my @t;
push (@t,\@tt);
print "[0][0]:".$t[0][0]."\n";
print "[0][1]:".$t[0][1]."\n";
print "[0][2]:".$t[0][2]."\n";
print "[0][3]:".$t[0][3]."\n";
@tt = (4,5,6,7);
push (@t,\@tt);
print "[1][0]:".$t[1][0]."\n";
print "[1][1]:".$t[1][1]."\n";
print "[1][2]:".$t[1][2]."\n";
print "[1][3]:".$t[1][3]."\n";
Run Code Online (Sandbox Code Playgroud)

输出是:

-------------------------
[0][0]:0
[0][1]:1
[0][2]:2
[0][3]:3
[1][0]:4
[1][1]:5
[1][2]:6
[1][3]:7
Run Code Online (Sandbox Code Playgroud)


这是我遇到的问题

我正在运行一些SQL来构建一个X包含列数的结果集.为了将数据存储到我的数组中,我想我可以使用与上面相同的语法:

while (@results=$sth->fetchrow_array())
{
    push(@stu_pool,\@results);
} 
Run Code Online (Sandbox Code Playgroud)

我测试了SQL并检查了结果集,所以问题与此无关.我还回到了长期的方法,这让我得到了我期望的最终结果.而不是使用push(@stu_pool,\@results);我在循环中使用此代码:

$stu_pool[$index][0] = $results[0];
$stu_pool[$index][1] = $results[1];
$stu_pool[$index][2] = $results[2];
$stu_pool[$index][3] = $results[3];
$stu_pool[$index][4] = $results[4];
$stu_pool[$index][5] = $results[5];
$stu_pool[$index][6] = $results[6];
$index++;
Run Code Online (Sandbox Code Playgroud)

那么是什么阻止我将元素推入这个数组呢?它适用于第一个示例,但是当我尝试打印出元素时,它们都是空白的.我正在使用的代码:

print "[0][0]:".$stu_pool[0][0]."\n"; …
Run Code Online (Sandbox Code Playgroud)

arrays perl push copy reference

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