好的,我在这里有点问题.我意识到我不需要为*:: HTML设置一个$ handle来使这个代码片段起作用,但是这个代码从它的使用中脱离了上下文,我确实需要这个来处理$ handle.我收到的输出在片段下面,但我想要的输出是file.html包含"what \nsometext1 \nsometext2 \n".
open(HTML, ">file.html");
$handle = \*::HTML;
print $handle "what\n";
open(READ, "< somefile.txt"); #somefile.txt contains sometext1\nsometext2\n
while(<READ>)
{
print $handle;
}
close READ;
close HTML;
Run Code Online (Sandbox Code Playgroud)
file.html保留输出"what",GLOB(0x6278b0)GLOB(0x6278b0)打印到终端窗口.
我最近一直在阅读一些代码,并遇到了一些问题:
somevar &= 0xFFFFFFFF;
Run Code Online (Sandbox Code Playgroud)
所有位都打开的东西有什么意义; 它到底是不是只等于somevar?
我怎么写一个接受像map函数那样的函数呢?
例:
$func = sub { print $_[0], "hi\n" };
&something($f);
sub something
{
my $func = shift;
for ($i = 0; $i < 5; $i++)
{ $func->($i); }
}
Run Code Online (Sandbox Code Playgroud)
工作良好.
但是如果我这样做的话
&something( { print $_[0], "hi\n" } );
Run Code Online (Sandbox Code Playgroud)
它不会工作,并说func是一个未定义的引用.
所以我的问题是如何编写一个接受perls map函数等参数的函数?
map { s/a/b/g } @somelist;
Run Code Online (Sandbox Code Playgroud) 有没有更简单的方法在c中执行以下操作?
unsigned short check_str(char *str)
{
while (*str)
{
if (!(*str == ' ' || *str == '(' || *str == ')' ||
*str == '1' || *str == '2' || *str == 'a' ||
*str == 'x' || *str == 'b'))
return 0;
str++;
}
return 1;
}
Run Code Online (Sandbox Code Playgroud)
基本上它会检查字符串中除列出的字符之外的任何字符,如果找到,则返回false.有更简单的功能吗?
如果我做:
#define TIMEFIXCONST 11644473600
Run Code Online (Sandbox Code Playgroud)
在32位机器上,它会溢出还是存储很长时间仍然可以正常工作?我应该只定义一个全局无符号长long并使用它吗?
选项A:
print $fh $hr->{'something'}, "|", $hr->{'somethingelse'}, "\n";
Run Code Online (Sandbox Code Playgroud)
选项B:
print $fh $hr->{'something'} . "|" . $hr->{'somethingelse'} . "\n";
Run Code Online (Sandbox Code Playgroud) 从文件中读取换行符后,这是一种安全的方法来修剪换行符吗?
while ( fgets(buffer, 1024, fp) != NULL )
{
buffer[strlen(buffer)-1] = '\0';
fprintf (stderr, "%s\n", buffer);
}
Run Code Online (Sandbox Code Playgroud)
它没有给我任何seg故障,但它可能会导致问题吗?我应该这样做吗?
while ( fgets(buffer, 1024, fp) != NULL )
{
tmp = (char *) malloc(strlen(buffer));
strncpy(tmp, buffer, strlen(buffer) - 1);
tmp[strlen(buffer)-1] = '\0';
fprintf (stderr, "%s\n", tmp);
}
Run Code Online (Sandbox Code Playgroud) char *str = malloc (14);
sprintf(str, "%s", "one|two|three");
char *token1, *token2, *token3;
char *start = str;
token1 = str;
char *end = strchr (str, '|');
str = end + 1;
end = '\0';
token2 = str;
end = strchr (str, '|');
str = end + 1;
end = '\0';
...
free(start);
Run Code Online (Sandbox Code Playgroud)
这是免费工作,因为我已经将str中的字节设置为null以便对它进行标记化吗?
安装Xerces-C ++(XML库)后:
./configure --disable-shared
./make
./make-install
ldconfig
Run Code Online (Sandbox Code Playgroud)
并编写简单程序(xmlval.cpp):
#include <stdio>
#include <xercesc/dom/DOM.hpp>
int main()
{
std::cout << "HI" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
并编译:
/usr/bin/g++ -L/usr/local/lib -I/usr/local/include -o xmlval xmlval.cpp /usr/local/lib/libxerces-c.a
Run Code Online (Sandbox Code Playgroud)
编译结果是一串这样的代码:
/usr/local/lib/libxerces-c.a(CurlNetAccessor.o): In function `xercesc_3_0::CurlNetAccessor::cleanupCurl()':
/home/stullbd/xerces-c-3.0.1/src/xercesc/util/NetAccessors/Curl/CurlNetAccessor.cpp:78: undefined reference to `curl_global_cleanup'
/usr/local/lib/libxerces-c.a(CurlNetAccessor.o): In function `xercesc_3_0::CurlNetAccessor::initCurl()':
/home/stullbd/xerces-c-3.0.1/src/xercesc/util/NetAccessors/Curl/CurlNetAccessor.cpp:70: undefined reference to `curl_global_init'
/usr/local/lib/libxerces-c.a(CurlURLInputStream.o): In function `~CurlURLInputStream':
/home/stullbd/xerces-c-3.0.1/src/xercesc/util/NetAccessors/Curl/CurlURLInputStream.cpp:168: undefined reference to `curl_multi_remove_handle'
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?