我需要有关imap文件夹编码的建议.
我是由我的邮件客户端(Thunderbird)imap文件夹与俄罗斯符号创建的.
文件夹名称是 - Проверка
文件系统上的文件夹名称是 - user.mylogin.&BB8EQAQ + BDIENQRABDoEMA-
我为convert编写了这段代码(perl v5.10.1)
use strict;
use warnings;
use utf8;
use Encode::IMAPUTF7;
my $folder=$ARGV[1];
binmode(STDOUT,':utf8');
if ($ARGV[0] eq 'to')
{ print Encode::IMAPUTF7::encode('IMAP-UTF-7', $folder) }
elsif ($ARGV[0] eq 'from')
{ print Encode::IMAPUTF7::decode('IMAP-UTF-7', $folder) }
print "\n";
Run Code Online (Sandbox Code Playgroud)
尝试将文件夹名称转换为俄语
[w@pandora6 tmp]$ ./imapfolder.pl from '&BB8EQAQ+BDIENQRABDoEMA-'
????????
Run Code Online (Sandbox Code Playgroud)
一切正常
尝试反向转换
[w@pandora6 tmp]$ ./imapfolder.pl to ????????
&ANAAnwDRAIAA0AC+ANAAsgDQALUA0QCAANAAugDQALA-
Run Code Online (Sandbox Code Playgroud)
嗯......我期待&BB8EQAQ + BDIENQRABDoEMA-
好的,编码回来
[w@pandora6 tmp]$ ./imapfolder.pl from '&ANAAnwDRAIAA0AC+ANAAsgDQALUA0QCAANAAugDQALA-'
ÐÑовеÑка
Run Code Online (Sandbox Code Playgroud)
WTF?我期待Проверка
什么地方出了错?
我有 RSS 提要,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>my feed</title>
<link rel="self" href="http://myhomesite.com/articles/feed/"/>
<updated>2019-11-04T12:45:00Z</updated>
<id>http://myhomesite.com/articles/feed/?dt=2019-11-04T12:45:00Z</id>
<entry>
<id>id0</id>
<link rel="alternate" type="text/html" href="https://yandex.ru/link123"/>
<author>
<name/>
</author>
<published>2019-11-04T12:45:00Z</published>
<updated>2019-11-04T12:45:00Z</updated>
<title type="html"><![CDATA[foo bar foo bar]]></title>
<content type="html"><![CDATA[]]></content>
</entry>
<entry>
<id>id2</id>
<link rel="alternate" type="text/html" href="https://myhomesite.com"/>
<author>
<name/>
</author>
<published>2019-11-04T09:45:00Z</published>
<updated>2019-11-04T09:45:00Z</updated>
<title type="html"><![CDATA[foo bar foo bar]]></title>
<content type="html"><![CDATA[]]></content>
</entry>
....
Run Code Online (Sandbox Code Playgroud)
我想删除link href !=/feed/entry处的所有节点 ( ) 。 http://myhomesite.com
如何使用 Bash 删除值从指定符号开始的 XML 节点?
我不明白..这很有趣,但我不明白))
请看下面
echo -n '\\prj\prj.prjjmbr.Interp\PRIL_35.jpg' | awk -F ';' '{a=length($1);print lenght a}'
Run Code Online (Sandbox Code Playgroud)
输出是35.这是对的
echo -n '\\prj\prj.prjjmbr.Interp\PRIL_35.jpg' | wc -c
Run Code Online (Sandbox Code Playgroud)
输出是35.这也是对的
echo -n '\\prj\prj.prjjmbr.Interp\Very long path with cyrillic symbols\?????????? ??????_?? ??????\??????\????? \Dinam_interp_2D_yujo-vost_ch_Urabor-Yahinskij_LU_2008 ( GNPTs_PurGeo ) \Otchet\GrafPril\PRIL_35.jpg' | awk -F ';' '{print length ($1)}'
Run Code Online (Sandbox Code Playgroud)
输出是202.
echo -n '\\prj\prj.prjjmbr.Interp\Very long path with cyrillic symbols\?????????? ??????_?? ??????\??????\????? \Dinam_interp_2D_yujo-vost_ch_Urabor-Yahinskij_LU_2008 ( GNPTs_PurGeo ) \Otchet\GrafPril\PRIL_35.jpg' | wc -c
Run Code Online (Sandbox Code Playgroud)
输出是237.
为什么非拉丁符号我会得到不同的结果?我怎么解决它?
ps修复后,我需要使用substr函数,即substr(path,10,8);
我有一个二进制文件.我想从提取所有数据$marker + $step到$marker(或文件的末尾).
数据示例:
23 40 92 34 32 09 84 39 02 89 30 fe 90 38 01 02 03 f1 f200 00 00 22 33 44 56 77 22 aa bb cc dd ef ff 00 11 ff dd cc cc cc 22 80 ee 01 02 03 f1 f200 00 00 22 33 44 56 23 40 92 34 32 dd cc cc 22 33 44 22 33 44 01 02 …
我有这个代码
...
my $line = '';
foreach $line ( split( /\n/x, $raw ) ) {
chomp $line;
my ( $key, $val ) = split( /=/x, $line );
$param{$key} = $val;
}
...
Run Code Online (Sandbox Code Playgroud)
在perlcritic检查后,我得到一些消息"循环迭代器不是词法." 怎么了?
我可以用
#my $line = '';
foreach my $line ( split( /\n/x, $raw ) )
Run Code Online (Sandbox Code Playgroud)
但为什么?:)
好:
my $login='anybody';
exit if $login ne 'root';
Run Code Online (Sandbox Code Playgroud)
不行:为什么下面不打印" error"?
my $login='anybody';
(print "error" && exit) if $login ne 'root';
Run Code Online (Sandbox Code Playgroud)
我知道if(condition){action}.我只想知道当前的问题.
perl ×4
linux ×2
awk ×1
bash ×1
encoding ×1
gawk ×1
perl-critic ×1
utf-8 ×1
xml ×1
xmlstarlet ×1