如何伪造perl钻石经营者的投入?
发布时间:2020-12-15 21:33:23 所属栏目:大数据 来源:网络整理
导读:The answers to this question描述了如何将输入伪造成 STDIN.我的目标是类似于这个问题:我的单元测试需要伪造输入到. 当我将相同的技术应用于假输入到时,它不起作用. 的介绍级解释导致我相信从STDIN读取命令行中没有提供任何文件,但这似乎并非如此. 我正在
The answers to this question描述了如何将输入伪造成< STDIN>.我的目标是类似于这个问题:我的单元测试需要伪造输入到<>.
当我将相同的技术应用于假输入到<>时,它不起作用. <>的介绍级解释导致我相信从STDIN读取命令行中没有提供任何文件,但这似乎并非如此. 我正在努力工作的样本: #!/usr/bin/perl -w use strict; use warnings; use Carp; use English qw( -no_match_vars ); sub fake1 { my $fakeinput = "asdfn"; open my $stdin,'<',$fakeinput or croak "Cannot open STDIN to read from string: $ERRNO"; local *STDIN = $stdin; my $line = <>; print "fake1 line is $linen"; return 0; } sub fake2 { my $fakeinput = "asdfn"; open my $stdin,$fakeinput or croak "Cannot open STDIN to read from string: $ERRNO"; local *STDIN = $stdin; my $line = <STDIN>; print "fake2 line is $linen"; return 0; } fake1(); fake2(); fake2的作品,假的没有.一个示例会话(“qwerty”是我打字): $perl /tmp/diamond.pl qwerty fake1 line is qwerty fake2 line is asdf 我的问题: >我如何将输入输入到<>? 谢谢. 解决方法
在您的第一个测试中尝试这样做:
open ARGV,$fakeinput or croak "Cannot open STDIN to read from string: $ERRNO"; my $line = <>; print "fake1 line is $linen"; 这不利于不是“本地” – 不知道如果你可以使其本地化.(您可以做几次,但每次测试之前重置) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |