perl - 如何读取文件并用名称替换值

标签 perl

我有一个称为源ID的文件。我想读取该文件,并根据源ID向其添加一个名称,例如15431 = MyTV8。我有一个列出源ID和名称的文件,但是我不确定如何读取原始ID,以及如何将频道映射文件中的名称添加到具有源ID的文件中。

我轮询的源ID的一小部分

13431
0
4112
4129
11412
0
0
12055
0
0
4129
0
0
12125
12120
0
10959
5370
5380
4109
0
20121
0
12334
11493
0
0
4107
5687
0
4008
0
0
4166
5378
4203
0
12056
0
0
0
0
4286
4183
0
0
4129
4037
0
10555
12209
11205
8846
0
0
5380
4719
0
4166
4117
4150
0
4183
0
4123
10391
0
4183
4151
5531
4107
4179
4185
4203
4203
0
4107

它们只是在一个文本文件中,这是源ID通道图

1052科幻
1053喜剧片
1066 CSPAN2
1067 ESPN经典
1100阳光足球
1133 TRUTV
1241 SHOWTIME 2 EAST
1312 MC金属
仅1315 MC KIDS
1318 MC HIP HOP&R&B
1319 MC MC MIX TAPE
1324 MC LITE CLASSICAL
1326 MC歌手和歌手
1330 MC R&B经典
1332 MC墨西哥
1334 MC RAGGAE
1338 MC HIP HOP CLASSICS
1339 MC季节的声音
1340 MC命中清单
1346 MC PARTY的收藏
1348 MC POP HITS
2006大学体育电视台
2469 WGCU世界
2470 WGCU ED电视
3014 ACTION MAX WEST
3048展示时间3
3051 STARZ!西1
3059珠宝电视
3064 STARZ!黑色
3068 WAM。
3069 STARZ!西影城5
3093尼克太
西行动区4003
4008头金
4011 ENCORE DRAMA EAST
4029 LOGO MTV
4037 MOVIEPLEX
4068 FCS SOCC
4070 EWTN数字
4081 TELEFUTURA
4100 ADS-AMC
4101 ADS-A&E
4103 ADS-BET
4104 ADS-BRVO
4105 ADS-C-SPAN
4107 ADS-TOON
4108 ADS-CMT
4109 ADS-CNBC
4110 ADS-CNN
4112 ADS-CMDY
4115 ADS-TRUTV / COURT-TV
4117 ADS-E!
4119 ADS-ESPN
4120 ADS-ESPN2
4121 ADS-EWTN
4123 ADS-霍尔马克
4124 FIT电视
4125 ADS-FX
4127 ADS闭路电视
4128 ADS-HIST
4129 ADS-HGTV
4130 ADS-HSN
4150 ADS-MSNBC
4151 ADS-MTV
4156 ADS-NICK
4157剥皮器
4159 PLAYBOY DIR。切割/ CP
4163 ADS型
4164 ADS-QVC
4166个ADS-SCIFI
4178 ADS-DSC
4179 ADS-FAM
4181 ADS-TLC
4182 ADS-SPIKE
美国ADS 4183
4184 ADS-TWC-数字
4185 ADS-TNT
4186 ADS-FOOD
4187 ADS-VH-1
4203 ADS-FXNEW
4241 ADS-TRAVL
4286 ADS-TCM
4460游戏展
4485 MTV2。
4545东方之子
4557 ADS-TVL
4702 ADS-VERSUS
4705 ADS-SPEED
4719 ADS-高尔夫
4730 ADS-WGN
5012广告测试1
5013广告测试2
5014广告测试3
5015广告测试4
5016广告测试5
5017广告测试6
5018广告测试7
5019广告测试8
5020广告测试9
5021广告测试10
5022广告测试11
5023广告测试12
5024 SUN SPORTS HD
5286 SHOP NBC。
5368 ADS-WEDU
5369 ADS-WXPX
5370 ADS-WFLA
5377 ADS-WTOG
5378 ADS-WTSP
6031 ADS-WRXY
6166 ADS-WWSB
6206 ADS-WZVN
6884 DXD /卡通迪士尼
7064 MY38白平衡高清
7077布隆伯格电视
7085大十
7086大十2
7090 ADS-HALLMARK VS
7331当前电视
7795 G4。
8282传记
8285历史记录。
8434 ADS-WTTA
8445户外CH
8499氧气
8675自己做
8841 WEATHERSCAN
8846终身电影网。
8888布拉沃
9144 NHL和MLB游戏1
9145 NHL和MLB GAME 2
9145 NHL和MLB GAME 2
9145 NHL和MLB GAME 2
9146 NHL和MLB游戏3
9146 NHL和MLB游戏3
9147 NHL和MLB游戏4
9147 NHL和MLB游戏4
9147 NHL和MLB游戏4
9148 NHL和MLB游戏5
9148 NHL和MLB游戏5
9148 NHL和MLB游戏5
9149 NHL和MLB游戏6
9149 NHL和MLB游戏6
9149 NHL和MLB游戏6
9150 NHL和MLB游戏7
9150 NHL和MLB游戏7
9150 NHL和MLB游戏7
9151 NHL和MLB游戏8
9151 NHL和MLB游戏8
9151 NHL和MLB游戏8
9152 NHL和MLB游戏9
9152 NHL和MLB游戏9
9152 NHL和MLB游戏9
9153 NHL和MLB游戏10
9153 NHL和MLB游戏10
9201保险丝
9237 THEN /天然气
9472 C-SPAN3
9544电视游戏
9550 SOAPNET
9597 GAC
10000电影
10001 ENCORE EAST
10002 HBO-2
10004 HBO-3签名
10005 SHOWTIME EAST
10006 STARZ! 1东
10008迪士尼频道。
10010 TMC
10011 SHOWTIME EXTREME E
HBO WEST 10012
CINEMAX WEST 10014
10021 ADS-ANPL
10023 CINEMAX更多MAX -2
10025 TMC XTRA 2东
10026动作最大东方
10028千斤顶最大东部
10041尼克
10042 MTV JAMS
10045 VH-1灵魂
10046 CMT纯
10057东方最大
10063 STARZ! 4个孩子的家庭
10065 STARZ! 5电影院
10067 VH-1 CLASSIC
10098 HBO LATINO E
10389字
10391国家地理
10398 DAYSTAR电视台
10475放映时间家庭
10555 @MAX EAST
10556女人
10558 5STARMAX东
10584 FCS ATL
10585 FCS CEN
10586 FCS PAC
10911放映时间高清电视
10935剧院高清CMCHD4
10959音乐电视HITS
10962精致生活/烹饪电视
11101 ADS-CW6 / WTVK46
11126 ADS-PAX /离子
11132 ADS-WMOR
11205 ADS-SNN
11242射频电视
11299 ADS-ESPN高清
11320 ADS-LIFE
11324 ADS-FSN-FLORIDA
11328 ADS-CC-SPORT-S
11406 ADS-DHC
11411 ADS-SUN
11412 ADS-CNN-HDLN
11414 ESPNU
11431 NBA电视
11446运动员
11493网球电视
11514 ESPN SPPV1
11515 ESPN SPPV2
11516 ESPN SPPV3
11517 ESPN SPPV4
11518 ESPN SPPV5
11519 ESPN SPPV6
11647 GOL电视
11684通用高清CMCHD2
11714 STARZ喜剧
11716 STARZ HD
11855电视一。
11911 ADS-TNTHD
12002年
12016 HBO EAST
12020年国际金融公司
12023 LOVE STORIES E.
12027神秘的东方
12030 OVATION
12032 SHOWTIME 2 EAST
12037 STARZ!边缘
12044西方东部
12045东方行动
12049发现儿童
12050浅绿色
12051发现科学
12055我们。
12056军事频道。
12112 ESPNEWS
12120光盘ID
12125 NFL网络
12130 FLIX EAST
12174超越东部的放映时间
12175 BBC美国
12209 ADS-TBS
12306 ADS-REALTY-TV-PC
12333 ADS-LOPC
12334 ADS-ACCESS-CH-19
12336 ADS-SARASOTA-ED
12339 ADS-LO
12340 ADS-TV-GUIDE
12393 WXPXHD
12800 ADS-ESPN2HD
12810 WFTX福克斯高清
12817 ADS-TBS高清
13008 HBO东区
13011 HBO家庭东部
13013 HBO COMEDY EAST
13017 WZVN PC高清电视
13039 WBBH PC高清电视
13050 NAT GEO WILD
13072 HALLMARK电影CH
13104 GOSPEL音乐电视
13135 HBO高清CMCHD5
13136最大高清CMCHD5
13229 SPROUT“ E”网络
13268 WFLA NBC高清
13289 WTVT福克斯高清
13406员工频道
13430个人
13431复古
13467 ADS-SCI-FI高清
13551 PALADIEA HD
13738 HGTV高清CMCHD1
13745 NATGEO高清CMCHD3
13907电视食品高清CMCHD2
14102美国橄榄球联盟
14507 ADS-WNFM-8
14710 A&E高清CMCHD1
15000需求1
15001需求2
15045 SHORTEEZ ADULT
15067 NBA球队1
15068 NBA球队2
15069 NBA球队3
15070 NBA球队4
15071 NBA球队5
15072球队6
15073球队7
15074球队8
15075 NBA球队9
15076球队10
15128 REELZ
15201版本-高清
15238 NHL和MLB游戏14
15239 NHL和MLB游戏13
15240 NHL和MLB游戏12
15241 NHL和MLB游戏11
15364 MTV西班牙TR3
15542顶层公寓/十名成人
16116 ADS-FOX业务
16120动物高清CMCHD4
16121科学高清CMCHD8
16122 TDC高清CMCHD3
16123 TLC高清CMCHD5
16129美国高清CMCHD3
16141 CNN HD CMCHD7
16240终身电影高清
16280 NHL网络
16317退休电视
16346 FX高清CMCHD9
16403高尔夫球高清CMCHD7
16414 AMC高清CMCHD7
16430传记高清
16543高速HD CMCHD9
16547 SPIKE高清
16686迪士尼高清CMCHD-8
16692家庭高清CMCHD8
16713尼古丁高清
16756福克斯新闻高清CMCHD9
16788 WEDU高清
16792 WTSP数字天气
16793 WTSP高清电视
16798终身高清
16807 WWSB高清电视
16817浅绿色高清
17000新鲜成人
17512 MLB网络
17535 MLBHD
18030 WGCU高清PBS
18324头条新闻高清
18333中医高清
18411 TRU电视高清
18630福克斯SPORTSNET FL HD
19005 3DTV 1
19421 3DTV 2
20101 MC 90'S
20102 MC ADULT ALTERNATIVE
20104 MC RAP
20105 MC THROWBACK JAMZ
20106 MC CONTEMP基督教
20107 MC经典国家
20108 MC TODAY'S COUNTRY
20110 MC ROCK
20112 MC GOSPEL
20113 MC复古摇滚
20115 MC TODDLER TUNES
20116 MC SOFT ROCK
20119 MC SOUNDSCAPES
20120 MC JAZZ
20121 MC SMOOTH JAZZ
20122 MC CLASSICAL MASTERP
20124 MC 80'S
20126 MC EASY LISTENING
20127 MC POP LATINO
20128 MC SOLID GOLD OLDIES
20129 MC R&B SOUL
20131 MC TRUE COUNTRY
20282 MC舞台和屏幕
20284 MC MUSICA城市
20287 MC热带
20289 MC经典摇滚
20338 MC CLASSIC ALTERNATV
20339 MC DANCE ELECTRONICA
20357 MC替代
20358 MC ROMANCES
20359 MC BLUES
20360 MC 70年代
21170 STARZ!高清CMCHD1
21203科幻高清CMCHD2
21442 THC高清CMCHD4
23104 E!高画质
23105旅行高清
23106卡通高清
23107 CSS高清。
23109 NFL红区
23110 IND HDPPV
23111 IND HDPPV2
23112 ESPNU高清

最佳答案

这里有一个通用的模式,就是这样:这是一个集合相交问题,因此可以使用Perl“集合”轻松解决,我们通常将其称为哈希:)。

该方法是根据其中一个数据文件创建一个集合(即,将其索引到哈希表中,例如:%set = (a => 1, b => 1, c => 1),其中的实际值无关紧要,因为我们将使用“设置成员运算符” exists)。

一旦有了它,只需遍历另一个数据集,并在上面的%set中测试其键之一(在您的情况下为源ID)的成员资格即可。

因此,假设频道映射文件的格式如下:

ID,NAME

并且源ID文件每行只有一个ID,您可以执行以下操作:

open my $CHANNEL_MAP, q{<}, $channel_map_file_name or die $!;
my %channel_map
    = map {
        chomp;
        my @mapping = split /,/;
        $mapping[0] => $mapping[1] # not needed, just being explicit.
      } <$CHANNEL_MAP>;
close $CHANNEL_MAP or die $!;

# source ID file passed as a command line argument
while (<>) {
    chomp;
    print "$_ = $channel_map{$_}\n"
        if exists $channel_map{$_};
}


但是,这似乎没有意义,因为您似乎要做的就是通过现有的源ID过滤通道映射文件。在这种情况下,您可以简单地为源ID文件建立索引(使用上述方法),然后简单地浏览通道映射文件并在源ID中打印ID所在的每一行。

关于perl - 如何读取文件并用名称替换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3536441/

相关文章:

perl - 如何grep perl Hash Keys 到一个数组?

perl - 如果间隔计时器事件始终准备就绪,为什么 AnyEvent::child 回调不会运行?

Excel VBA – 如何创建和转储数组复杂结构的哈希值?

perl - 如何在 Perl 字符串中手动插入字符串转义?

perl - 只有在没有加载要求的情况下,如何运行我的 Perl 脚本?

java - 我怎样才能在Java中执行相当于以下操作的操作

perl - 如何找到基本的、未变形的词进行搜索?

linux - linux perl中从任何编码到utf-8的文件编码

Perl 比较版本号 5.1 < 5.10

perl - 如何删除在 perl 中运行的 shell 命令未使用的参数?