我有此功能来识别和转换标签,表情符号等
function convert_text($str) {
$regex = "/[@#](\w+)/";
//type and links
$hrefs = [
'#' => 'hashtag.php?hashtag',
'@' => 'user.php?user'
];
$result = preg_replace_callback($regex, function($matches) use ($hrefs) {
return sprintf(
'<a href="%s=%s">%s</a>',
$hrefs[$matches[0][0]],
$matches[1],
$matches[0]
);
}, $str);
//$result = preg_replace("/U\+([A-F0-9]{5})/", '\u{${1}}', $result);
$result = preg_replace('/U\+([A-F0-9]{5})/', '<span style="font-size:30px;">&#x\\1;</span>', $result);
return ($result);
}
Run Code Online (Sandbox Code Playgroud)
我想,使其认识http://并https://从文字和比转换为:
<a href="http://link.com">http://link.com</a>
如何在函数内部实现呢?
给出了一个输入文件,该文件的每一行包含每一列的引号和回车符/换行符。
如果该行包含新行,则将其附加在引号内的同一行中,例如,第1行
如果没有定界符(,),则删除每列的双引号。
删除回车符,即(^ M)
为了举例,给出以下输入文件
"name","address","age"^M
"ram","abcd,^M
def","10"^M
"abhi","xyz","25"^M
"ad","ram,John","35"^M
Run Code Online (Sandbox Code Playgroud)
我想通过sed / perl / awk脚本/ oneliner获得以下输出。
name,address,age
ram,"abcd,def",10
abhi,xyz,25
ad,"ram,John",35
Run Code Online (Sandbox Code Playgroud)
到目前为止我已经累了的解决方案用于附加上一行
sed '/^[^"]*"[^"]*$/{N;s/\n//}' sample.txt
Run Code Online (Sandbox Code Playgroud)
用于替换Control-M字符
perl -pne 's/\\r//g' sample.txt
Run Code Online (Sandbox Code Playgroud)
但是我没有达到我下面要求的最终输出
我有此示例数据,我想删除逗号,特别是该行的最后一个逗号,顺便说一下,它是.csv文件。
W,S,Vbd2OX / NW,Vbd2OX / PW,Vbd3OX / NW,Vbd3OX / PW, ID,ID,11200,V 11200,V 11200,V 11200, 6,1,0.69,5.56,-5.56,10.5,-10.12, 6,2,3.99,7,-5.13,-7,640.455,
这2个代码不起作用最后一个逗号仍然存在
$line =~ s/\,$//g;
Run Code Online (Sandbox Code Playgroud)
和
$line =~ s/,//g;
Run Code Online (Sandbox Code Playgroud) 我对 perl 编程有点陌生,我有一个可以这样表述的散列:
$hash{"snake"}{ACB2} = [70, 120];
$hash{"snake"}{SGJK} = [183, 120];
$hash{"snake"}{KDMFS} = [1213, 120];
$hash{"snake"}{VCS2} = [21, 120];
...
$hash{"bear"}{ACB2} = [12, 87];
$hash{"bear"}{GASF} = [131, 87];
$hash{"bear"}{SDVS} = [53, 87];
...
$hash{"monkey"}{ACB2} = [70, 230];
$hash{"monkey"}{GMSD} = [234, 230];
$hash{"monkey"}{GJAS} = [521, 230];
$hash{"monkey"}{ASDA} = [134, 230];
$hash{"monkey"}{ASMD} = [700, 230];
Run Code Online (Sandbox Code Playgroud)
哈希的结构总结如下:
%hash{Organism}{ProteinID}=(protein_length, total_of_proteins_in_that_organism)
Run Code Online (Sandbox Code Playgroud)
我想根据某些条件对这个哈希进行排序。首先,我只想考虑那些蛋白质总数大于100的生物,然后我想显示生物的名称以及最大的蛋白质及其长度。
为此,我将采用以下方法:
foreach my $org (sort keys %hash) {
foreach my $prot (keys %{ $hash{$org} }) {
if ($hash{$org}{$prot}[1] > 100) {
@sortedarray = …Run Code Online (Sandbox Code Playgroud) This is perl 5, version 30, subversion 1 (v5.30.1) built for MSWin32-x64-multi-thread
Win10
cygwin
Run Code Online (Sandbox Code Playgroud)
我不知道如何使用 opendir。这是我的示例代码:
sub test($) {
my $dir = shift;
opendir (DIR, $dir) || die "Couldn't open dir $dir $!";
}
sub main() {
my $dir = `pwd`;
test($dir);
}
Run Code Online (Sandbox Code Playgroud)
错误信息
Couldn't open dir /home/skidmarks/Projects/Perl
Invalid argument at ./test.py line .
Run Code Online (Sandbox Code Playgroud)
pwd 返回一个 Unix 格式的目录路径 ('/')。我已经尝试过使用 Windows 格式的目录路径 ('\')。唯一有效的是对路径使用文字字符串,例如“。” 或“some_directory_path”。
我不能在 opendir 中使用变量作为路径吗?
我正在使用 perl strftime for (datetime now)
perl -MPOSIX -e 'print POSIX::strftime("%m/%d/%Y %H:%M", localtime());'
Run Code Online (Sandbox Code Playgroud)
我想现在减去 12 小时的日期时间
输出示例:
2/7/2020 1:00至2/6/2020 13:00<- 仅减去 12 小时
请使用提到的代码帮助解决此问题
遇到print了我不明白的三元条件运算符之间的奇怪交互。如果我们这样做...:
print 'foo, ' . (1 ? 'yes' : 'no') . ' bar';
...然后我们得到输出...:
foo, yes bar
...正如我们所料。但是,如果我们这样做...:
print (1 ? 'yes' : 'no') . ' bar';
...然后我们就得到输出...:
yes
为什么在第二种情况下没有将“bar”附加到输出?
执行以下简化代码时:
use strict; # [01]
use warnings FATAL => 'unopened'; # [02]
# [03]
my ($inHandle, $outHandle) = (\*STDIN, \*STDOUT); # [04]
print $outHandle "STDOUT 1\n"; # [05]
# [06]
# $outHandle re-assigned to outputA.txt ??? # [07]
open($outHandle, ">outputA.txt") or die ("A: $!\n"); # [08]
print $outHandle "FILE A\n"; # [09]
print "STDOUT? 2\n"; # [10]
print STDOUT "STDOUT 3\n"; # [11]
close $outHandle; # [12]
# [13]
# $outHandle is closed # [14]
print STDOUT "STDOUT 4\n"; # …Run Code Online (Sandbox Code Playgroud) 我想在字符串中搜索给定的字符并返回它后面的字符。
根据此处的帖子,我尝试写作
my $string = 'v' . '2';
my $char = $string =~ 'v'.{0,1};
print $char;
Run Code Online (Sandbox Code Playgroud)
但这会返回 1 和一个哈希值(我上次运行它时,确切的输出是 1HASH(0x11823a498))。有谁知道为什么它返回一个散列而不是字符?
以下代码返回“在 (eval 1) 第 1 行,靠近“*,out”的操作符预期位置找到了裸字(out 之前缺少操作符?)”
$val = 0;
$name = "abc";
$myStr = '$val = ($name =~ in.*,out [)';
eval($myStr);
Run Code Online (Sandbox Code Playgroud)
根据我的理解,我可以通过用“//”包装“in.*,out [”块来解决这个问题。
但是“in.*,out [”可以变化。(例如:用户输入)。用户可能会错过给出“//”。因此,还有其他方法来处理这个问题吗?(例如:如果 eval() 尝试返回“在...处找到裸字”,则返回 0)