Perl 如何从.txt文件运行?

Perl 如何从.txt文件运行?,perl,Perl,我试图通过在字符串的末尾追加数据来从base58组合中获取数据 #!c:\perl64\bin\perl.exe {$db = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"; $pw="Rw5cfDTA8zGsdjEhKnhXJTH7LrciGrDi9qZ1"; @delen = split('',$pw); @letters = split('',$db); $length

我试图通过在字符串的末尾追加数据来从base58组合中获取数据

#!c:\perl64\bin\perl.exe
 
{$db = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
$pw="Rw5cfDTA8zGsdjEhKnhXJTH7LrciGrDi9qZ1";
@delen = split('',$pw);
@letters = split('',$db);
$length = length($pw);
for ($position = 36; $position < $length+1; $position++)
{foreach(@letters)
    {
        @new = @delen;
        splice(@new, $position, 0, $_);
        print join('',@new)."\n";
    }}}
#!c:\perl64\bin\perl.exe
{$db=“123456789abcdefghjklmnpqrstuvxyzabcdefghijkmnopqrstuvxyz”;
$pw=“rw5cfta8zgsdjehknhxjth7lrcigrdi9qz1”;
@德伦=分割(“”,$pw);
@字母=拆分(“”,$db);
$length=长度($pw);
对于($position=36;$position<$length+1;$position++)
{foreach(@letters)
{
@新=@delen;
拼接(@new,$position,0,$);
打印联接(“”,@new)。“\n”;
}}}
我必须在$pw定义中逐个输入所有组合。我希望它处理TXT文件中列表的所有行,而不是手动输入。我做了一些关于如何做的研究,但失败了

编辑:

我找到了上面提到的方法,就是这样。然而,我有一个不同的问题。当我运行Perl文件时,输出的顺序很糟糕。我认为从输入文件中获取数据有问题

#!c:\perl64\bin\perl.exe

open( my $data, "<", "test.txt" ) or die "There was a problem opening: $!";

while ($data) {
    {
        my $db = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
        my $pw = <$data>;
        my @delen   = split( '', $pw );
        my @letters = split( '', $db );
        my $length  = length($pw);
        for ( my $position = 35 ; $position < $length + 1 ; $position++ ) {
            foreach (@letters) {
                my @new = @delen;
                splice( @new, $position, 45, $_ );
                print join( '', @new ) . "\n";

            }
        }
    }
}
#!c:\perl64\bin\perl.exe
打开(我的$data,“#最终版”

经过长期的努力,我得到了我想要的结果。这对我来说完美无瑕

#!c:\perl64\bin\perl.exe

open( my $data, "<", "4.txt" ) or die "There was a problem opening: $!";

while ($data) {
    {
        my $db = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
        my $pw = <$data>;
        my @delen   = split( ' ', $pw );
        my @letters = split( '', $db );
        my $length  = length($pw);
        for ( my $position = 39 ; $position < $length + 1 ; $position++ ) {
            foreach (@letters) {
                my @new = @delen;
                splice( @new, $position, 0, $_ );
                print join('', @new ) . "\n";

            }
        }
    }
}
#决赛

经过长期的努力,我得到了我想要的结果。这对我来说完美无瑕

#!c:\perl64\bin\perl.exe

open( my $data, "<", "4.txt" ) or die "There was a problem opening: $!";

while ($data) {
    {
        my $db = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
        my $pw = <$data>;
        my @delen   = split( ' ', $pw );
        my @letters = split( '', $db );
        my $length  = length($pw);
        for ( my $position = 39 ; $position < $length + 1 ; $position++ ) {
            foreach (@letters) {
                my @new = @delen;
                splice( @new, $position, 0, $_ );
                print join('', @new ) . "\n";

            }
        }
    }
}

我得到
打开时出现问题:…
运行第二个脚本时出错。请尝试澄清您的问题。它不完全清楚您想从它的初始标题中得到什么。我得到
打开时出现问题:…
运行第二个脚本时出错。请尝试澄清您的问题。它不完全清楚您想要什么从它的初始标题开始。完全可以接受你自己的答案。你的
while($data)
看起来很奇怪。
$data
包含一个文件句柄,所以它总是正确的。我想知道你的意思是
while()
(这也意味着你可能需要将
$pw=
更改为
$pw=$\ucode>)。我不知道编码语言,我只是通过研究编辑了它。我是个新手,所以我不知道你的问题。但据我所知,它从文件中读取“$data”并将其传递给$pw。这是学习语言的一种糟糕的方式。也许要花些时间阅读。
$pw=
的意思是”从文件句柄
$data
读取一条记录,并将其存储在
$pw
中。但(可能)错误的是
while($data)
。这意味着“在
$data
为真时执行此操作”“。但是由于
$data
是一个文件句柄,它将永远是真的,你的循环将永远不会结束。接受你自己的答案是完全可以接受的。你的
while($data)
看起来很奇怪。
$data
包含一个文件句柄,因此它将永远是真的。我想知道你的意思是
while()
(这也意味着您可能需要将
$pw=
更改为
$pw=$\uuz
)。我不知道编码语言,我只是通过研究对其进行了编辑。我是个新手,所以我不知道您的问题。但据我所知,它是“$data”从文件中读取并将其传递到$pw。这是一种学习语言的糟糕方式。可能需要花一些时间阅读。
$pw=
意味着“从文件句柄读取记录
$data
,并将其存储在
$pw
”。但
while($data)
是(可能)错误的。这意味着“在
$data
正确时执行此操作”。但由于
$data
是一个文件句柄,因此它将始终为真,并且循环将永远不会结束。