这个代码片段的c#等价物是什么?

时间:2010-04-17 21:02:17

标签: c# perl

我真的不懂Pe​​rl,所以我想知道是否有人可以给我一个提示,告诉我这个代码对STDIN的要求是什么,以及如何在C#中说这个。 感谢。

$TMPFILE = "xxx.tmp";
if (! -f STDIN) {
  open TMPFILE, "> $TMPFILE"
    or die "Couldn't open `$TMPFILE' for writing: $!; aborting";
  print TMPFILE while <STDIN>;
  close TMPFILE;
  open STDIN, "< $TMPFILE"
    or die "Couldn't open `$TMPFILE' for reading: $!; aborting";
  unlink $TMPFILE;
}

2 个答案:

答案 0 :(得分:3)

代码读取从STDIN(等于Console.In)到EOF到临时文件的所有内容,然后将STDIN重定向到该临时文件。在C#中,您使用Console.SetIn()方法重定向。

答案 1 :(得分:2)

如果STDIN未连接到普通文件,它会打开一个临时文件,从标准输入复制到临时文件(最多为EOF),然后连接STDIN以从该文件读取。据推测,它是这样做的,因为后来它希望能够在STDIN上seek,并且你无法寻找特殊文件。

如果STDIN连接到普通文件,则

-f STDIN为true,如果连接到特殊文件(如控制台或管道),则为false。