这种代码是否也适用于其他函数(而不是dbmopen),这会打开一个文件并在失败时返回false?
my $n_tries = 5;
while ($n_tries--) {
if (dbmopen (%CHOICES, &dbm_file(), 0600)) {
last;
} else {
if ($! eq 'Resource temporarily unavailable') {
my $wait = rand 0.45; select undef, undef, undef, $wait;
} else { return;
}
}
}
Run Code Online (Sandbox Code Playgroud) 好的,这就是我正在做的事情.我正在为我的自定义扩展(.cpm)结尾的文档制作一个perl解释器.我环顾四周,发现了
似乎HTML :: Parser是要走的路.我要求的是一个简单的教程来解析带有特殊标签的文档.例如,我想要一些东西向我展示如何解析HTML文档,但无论什么时候,<putinbold>
它都会被替换掉<b>
.
我想要的一个例子 -
<html>
This is HTML talking
<liamslanguage>say "This is Liams language speaking"</liamslanguage>
</html>
只是在char *ptr = "Hello World"
字符串文字或两个"Hello World"
字符串文字?
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char array[] = { "Hello World" };
char *ptr = "Hello World";
printf( "%s\n", array );
printf( "%s\n", ptr );
printf( "%c\n", *array );
printf( "%c\n", *ptr );
printf( "%c\n", array[1] );
printf( "%c\n", ptr[1] );
return EXIT_SUCCESS;
}
# Hello World
# Hello World
# H
# H
# e
# e
Run Code Online (Sandbox Code Playgroud) 如何从表中获取列名?我的尝试不起作用:
#!/usr/bin/env perl
use warnings;
use 5.012;
use DBI;
my $options = { RaiseError => 1, PrintError => 0, f_ext => ".csv/r" };
my $dbh = DBI->connect( "dbi:CSV:", undef, undef, $options ) or die $DBI::errstr;
my $table = 'test';
$dbh->do( "CREATE TEMP TABLE $table ( id INT, size INT )" );
my $sth = $dbh->prepare( "INSERT INTO $table ( id, size ) VALUES( ?, ? )" );
$sth->execute( 1, 235 );
$sth->execute( 2, 42 );
use Data::Dumper;
say Dumper $dbh->{csv_tables}{$table}{col_names}; …
Run Code Online (Sandbox Code Playgroud) 如果我按原样运行这个脚本,它就可以了.
但为什么这不起作用cgi
?
当我使用_\01_
而不是_\00_
它也适用cgi
.
#!/usr/bin/env perl
use warnings;
use 5.012;
### script_1.cgi #########################################
my @array = ( '1524', '2.18 MB', '09/23/03', '_cool_name_', 'type' );
my $row = join "_\00_", @array;
say $row;
# submit $row to script_2.cgi
### script_2.cgi #########################################
# ...
# my $row = $cgi->param('row');
# my $name;
if ( $row =~ /_\00_([^\00]+)_\00_type\z/ ) {
# $name = $1;
say "Name: <$1>";
} else {
die "<$row> $!";
}
# Software …
Run Code Online (Sandbox Code Playgroud) 为什么Perl会在这种情况下发出警告
Use of uninitialized value `$new` in substitution (s///) at ./perl.pl line 8.
Run Code Online (Sandbox Code Playgroud)
并不是
Use of uninitialized value `$string` in substitution (s///) at ./perl.pl line 8.
#!/usr/bin/env perl
use warnings;
use strict;
my $string;
my $new;
( $new = $string ) =~ s/^.//;
Run Code Online (Sandbox Code Playgroud) perl ×6
ascii ×1
c ×1
cgi ×1
columnname ×1
csv ×1
dbi ×1
encoding ×1
file ×1
html-parser ×1
regex ×1
substitution ×1
testing ×1
warnings ×1