首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >随机输入输出

问随机输入输出
EN

Unix & Linux用户
提问于 2021-05-05 11:43:12
回答 1查看 333关注 0票数 -4

相关问题:如何从用户输入中创建随机输出

我正在考虑从用户那里获取一个输入(只有一个参数),就像Hello一样。而且,我想给出如下的输出

代码语言:javascript
复制
olleho
llohe
he
llo
lo

就像上面一样。而且,我想从这个单一的输入中得到数百万的样本。我想将这些文本保存在txt格式的文件中。该怎么做呢?

假设,我给我的电子邮件地址作为一个论点Istiakshovon0@gmail.com。所以,现在我想让相关的密码可能与这个帐户。以下是一些样本产出:

代码语言:javascript
复制
Istiakshovon0@gmail.com
Istiakshovon
Istiak
Ishovon
Ishovon0
Iksgc
gmail
moc

我希望尽可能地创建示例密码。

我添加了awk标签,因为我注意到很多人使用awk格式化文本。我不熟悉它(我只是一个初学者Linux用户)。所以我才加进去的。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2021-05-06 15:04:10

使用perl和算法::置换库模块:

代码语言:javascript
复制
#!/usr/bin/perl

use strict;
use Algorithm::Permute qw(permute);

my $string = 'hello';
my @array = split //, $string;
permute { print join("",@array), "\n" } @array;
代码语言:javascript
复制
$ ./permute.pl | head
hello
helol
heoll
hoell
ohell
hello
helol
heoll
hoell
ohell

以上版本只打印与原版相同长度的排列。

下面的版本做了从长度1到相同长度的所有排列:

代码语言:javascript
复制
#!/usr/bin/perl

use strict;
use Algorithm::Permute;

my $string = shift; # New & Improved! Now takes an argument!

# un-comment only ONE of the following two lines:
#for my $i (reverse 1 .. length($string)) {
for my $i (1 .. length($string)) {

  my $p = Algorithm::Permute->new([split //, $string], $i);
  while (my @res = $p->next) {
    print join('',@res), "\n";
  };
};

保存为,例如,permute.pl。使用chmod +x permute.pl制作可执行文件并运行如下:

代码语言:javascript
复制
$ ./permute.pl hello

注1:结果表明,算法::Permute模块中有一个已知的bug 执行完全排列时,原始数组将被清空。,它删除了调用它的数组。

这显然是非过激行为,而且可能是因为模块不是本机perl,它是围绕编译的C function....and编写的一个薄薄的perl包装器C函数是以破坏数组的方式编写的。

总之,这就是为什么我要去掉my @array = split //, $string行,并使用[split //, $string]为Algorithm::Permute->new()方法生成一个匿名数组。这将确保在遍历循环时重新创建数组。

通常,如果一个数组没有(或者不应该)在循环中被修改,它应该只创建一次,在循环之外。

注2:如果您想要反转输出顺序,可以将脚本的输出输送到tac,或者将脚本中的for循环更改为:

代码语言:javascript
复制
for my $i (reverse 1 .. length($string)) {

做这件事让我警觉到了窃听器。上面更新的版本现在可以使用或不使用reverse。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/648230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档