我有一个名为email.txt的文件,如下所示:
Subject:My test
From:my email <myemail@gmail.com>
this is third test
Run Code Online (Sandbox Code Playgroud)
我想通过使用bash脚本只取出这个文件中的电子邮件地址.所以我把这个脚本放在我的名为myscript的bash脚本中:
#!/bin/bash
file=$(myscript)
var1=$(awk 'NR==2' $file)
var2=$("$var1" | (grep -Eio '\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b'))
echo $var2
Run Code Online (Sandbox Code Playgroud)
但我无法运行此脚本.当我在bash中手动运行此命令时,我可以获取电子邮件地址:
echo $var1 | grep -Eio '\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b'
Run Code Online (Sandbox Code Playgroud)
我需要将电子邮件地址存储在变量中,以便我可以在其他函数中使用它.有人可以告诉我如何解决这个问题吗?谢谢.
我的理解(可能显然是错误的)是Authen :: OATH模块与Google Authenticator App生成的totp代码兼容.但它对我不起作用,而类似的红宝石代码则有用.我们在这里是一个perl商店,如果有人能指出我正确的方向来帮助我免于逐行挖掘两个库,那将会有所帮助.
这款红宝石兼容:
require 'rubygems'
require 'rotp'
secret = "bqagf6ohx4rp3a67"
puts ROTP::TOTP.new(secret).now.to_s
Run Code Online (Sandbox Code Playgroud)
这个perl没有:
use Authen::OATH;
my $oath = Authen::OATH->new();
my $totp = $oath->totp(" bqagf6ohx4rp3a67" );
print "$totp\n";
Run Code Online (Sandbox Code Playgroud) 在读取下载的Perl模块时,我找到了几种定义输入参数的方法,如下所示.它们之间有什么区别?
sub new{
my $class = shift;
my $self = {@_};
bless{$self, $class};
}
sub count1{
my ($self, $lab1) = @_;
}
sub new1{
my ($class, $lab1) = @_;
my $self = {};
bless $class, $self;
}
sub setpath{
my $self = shift;
}
Run Code Online (Sandbox Code Playgroud) 这是我关于SO的第一个问题,很抱歉,如果这很愚蠢,但是当我最近在生产代码中遇到它时,这真的让我很困惑.我把我的问题归结为两个代码块,我希望它能做同样的事情,即为每次迭代生成一个随机数:
for my $num (0 .. 5) {
my $id = int rand 10;
print "$id\n";
}
Run Code Online (Sandbox Code Playgroud)
和
for (0 .. 5) {
my $tmp;
my $id = $tmp if $tmp;
$id = int rand 10 unless $id;
print "$id\n";
}
Run Code Online (Sandbox Code Playgroud)
第一个执行我期望它做的事情,但第二个执行任意数量的迭代相同的数字.$tmp在这种简化中总是未定义,所以它只是在那里显示行为,因为遗漏= $tmp if $tmp会产生我期望的结果.
我很欣赏为什么会发生这种情况.
请考虑下面的脚本,即使$ b是部分匹配,我也要将$ b与$ a匹配.可以这样做吗?
$a="MCF-7";
$b="MCF";
if($b=~m/$a/i)
{
print "FOUND";
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个子程序,它接受数组的散列作为参数.但是,当我尝试检索其中一个数组时,我似乎得到了数组的大小而不是数组本身.
my(%hash) = ( );
$hash{"aaa"} = ["blue", 1];
_subfoo("test", %hash);
sub _subfoo {
my($test ,%aa) = @_;
foreach my $name (keys %aa) {
my @array = @{$aa{$name}};
print $name. " is ". @array ."\n";
}
}
Run Code Online (Sandbox Code Playgroud)
这比我预期的那样返回2而不是(蓝色,1).在子例程中是否还有其他方法可以处理哈希中的数组?
如果这对于堆栈溢出,第一次海报和编程新手来说太简单了,请道歉.
我不熟悉perl,我正在尝试编辑irssi翻译脚本.Web请求的结果返回为:
$result = {
"data" => {
"translations" => [
{
"translatedText" => "Halloween"
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
我如何只获取translatedText部分,以便
$string = 'Halloween'
Run Code Online (Sandbox Code Playgroud)
谢谢.