标签: filehandle

在C++程序中更改stdout的值

我有一个Windows C++程序正在执行以下操作:

  FILE* pf = ...;
  *stdout = *pf;    // stdout is defined in stdio.h

我正在寻找一个解释,当你更改stdout文件句柄的值时会发生什么.这只是重定向标准输出的一种方式吗?

-cr

c c++ stdout filehandle

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

显式关闭文件句柄或让操作系统在Unix C编程中关闭它们?

在Unix C编程中,在进程退出之前显式关闭文件句柄是一种很好的做法,还是让操作系统关闭文件句柄从而避免不必要的代码?

通常会将两者中的哪一个视为首选替代方案?

例:

int main (int argc, char* argv[])
{
    int sd;
    sd = socket(...);

    // Snip

   close(sd); // Good or bad practice?
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

c unix filehandle

3
推荐指数
2
解决办法
1058
查看次数

如何以编程方式生成多个Perl文件句柄?

Perl有没有办法以编程方式生成文件句柄?

我想同时打开十个文件并使用包含(CONST NAME + NUMBER)的文件句柄写入它们.例如:

 print const_name4  "data.."; #Then print the datat to file #4
Run Code Online (Sandbox Code Playgroud)

perl filehandle

3
推荐指数
2
解决办法
619
查看次数

写入perl中的文件

我想写一下我在hash中填充的键和值对.我正在使用

open(OUTFILE,">>output_file.txt");
{
    foreach my $name(keys %HoH) {
        my $values = $HoH{$name};
        print "$name: $values\n";
    }
}
close(OUTFILE); 
Run Code Online (Sandbox Code Playgroud)

它以某种方式创建了它,output_file.txt但它没有将数据写入它.可能是什么原因?

perl filehandle

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

用Filehandle和while循环定义的用法

在阅读有关高级Perl编程(1)的书时,我遇到了这段代码:

while (defined($s = <>)) {
    ...
Run Code Online (Sandbox Code Playgroud)

defined在这里使用有什么特别的理由吗?perlop文档 说:

在这些循环结构中,然后测试指定的值(无论是自动还是显式赋值)以查看它是否已定义.定义的测试避免了line具有字符串值的问题,该字符串值将被Perl视为false,例如a """0"没有尾随换行符.如果你真的想要这些值来终止循环,那么它们应该被明确地测试:[...]

那么,是否会有一个角落案例,或者仅仅是因为这本书太旧而且defined在最近的Perl版本中添加了自动测试?


(1) 高级Perl编程,第一版,Sriram Srinivasan.奥莱利(1997)

perl filehandle while-loop

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

如何将文件句柄传递给Perl子程序?

我想要一个从特殊文件句柄中读取的Perl模块,并将其<STDIN>传递给子例程.当你看到我的代码时,你会明白我的意思.以下是它之前的情况:

#!/usr/bin/perl
use strict; use warnings;

use lib '/usr/local/custom_pm'
package Read_FH

sub read_file {
my ($filein) = @_;
open FILEIN, $filein or die "could not open $filein for read\n";
# reads each line of the file text one by one
while(<FILEIN>){
# do something
}
close FILEIN;
Run Code Online (Sandbox Code Playgroud)

现在,子例程将文件名(存储在其中$filein)作为参数,使用文件句柄打开文件,并使用精细句柄逐个读取文件的每一行.

相反,我想从中获取文件名<STDIN>,将其存储在变量中,然后将此变量作为参数传递给子例程.从主程序:

$file = <STDIN>;
$variable = read_file($file);
Run Code Online (Sandbox Code Playgroud)

该模块的子程序如下:

#!/usr/bin/perl
use strict; use warnings;

use lib '/usr/local/custom_pm'
package Read_FH

# subroutine that parses the file
sub read_file …
Run Code Online (Sandbox Code Playgroud)

perl filehandle subroutine

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

如何在 Swift 或 Objective C 中将文本预先添加到文件中?

请注意,我不是在问如何在文件末尾附加文本。我在问如何在文件开头添加文本。

let handle = try FileHandle(forWritingTo: someFile)
//handle.seekToEndOfFile() // This is for appending
handle.seek(toFileOffset: 0) // Me trying to seek to the beginning of file
handle.write(content)
handle.closeFile()
Run Code Online (Sandbox Code Playgroud)

似乎 mycontent写在文件的开头,但它也只是取代了现有的同意......谢谢!

objective-c filehandle prepend nsfilehandle swift

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

任何解决 __DATA__ 不是文件句柄这一事实的方法,即使它在所有文档中都是这样引用的

我读过的所有文档都说__DATA__“特殊文件句柄”之类的内容,但它不是文件句柄,不是吗?

https://perldoc.perl.org/perldata#Special-Literals

默认情况下,当 Perl 读取文件来解析源代码时,DATA 文件句柄具有适当的 PerlIO 层。”

#!/bin/env perl                                                                                                                                                                                   

open($config, "<test.pl");

$config_copy = $config; # let's me copy a filehandle

while (<$config_copy>) {
  print $_;  # works just fine
}

$config_copy = __DATA__;  # FAIL syntax error does not let me copy a filehandle

while (<$config_copy>) {
  print $_;
}

__DATA__                                                                                                                                                                                          
1                                                                                                                                                                                                 
2                                                                                                                                                                                                 
3                                                                                                                                                                                                 
4                                                                                                                                                                                                 
5          
Run Code Online (Sandbox Code Playgroud)

我基本上想将文件句柄传递给配置文件读取器函数或传递__DATA__(如果存在),但读取器函数位于与段不同的包中__DATA__,因此我需要__DATA__作为参数传递,因为__DATA__只能从同一个包或文件它在其中声明,但 Perl 并不__DATA__像其他文件句柄那样对待。它不能作为函数参数进行赋值或传递。

------ package ConfigReader ------------------
package ConfigReader;

sub ReadConfig …
Run Code Online (Sandbox Code Playgroud)

perl filehandle

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

*PIPER在Perl中意味着什么?

我需要一些帮助来理解以下Perl代码段.我有以下两个问题.

1.当地*PIPER意味着什么?即使我在local *语法对我来说之前已经完成了一些Perl编程.它是指针吗?

2.目的是什么?

curl http://www.somesite.net/cgi-bin/updateuser.cgi? -d "userid=$userid&password=$password\" -s |"; ?
Run Code Online (Sandbox Code Playgroud)

谢谢 :)

local *PIPER;

$http_query = "curl http://www.somesite.net/cgi-bin/updateuser.cgi? -d \"userid=$userid&password=$password\" -s |";

open(PIPER,$http_query) or die "sorry";

while(<PIPER>)
{
   $rets = $_;

}

close(PIPER);

return $rets;
Run Code Online (Sandbox Code Playgroud)

perl filehandle typeglob

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

Perl glob和文件句柄问题

好的,我在这里有点问题.我意识到我不需要为*:: 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)打印到终端窗口.

perl glob filehandle

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