아주 간단한 스크립트에서 maplist.txt 파일을 읽고 \ n 분리 된 맵 이름을 사용하여 명령 문자열을 작성하고 있습니다. 그러나 예기치 않은 동작이 나타납니다. .Perl 문자열 연결에 이상한 동작
내 전체 코드 :
내가$mapfile
를 선언
# compiles a map pack from maplist.txt
# for every server.
# Filipe Dobreira <[email protected]>
# v1 @ Sept. 2011
use strict;
my @servers = <*>;
foreach my $server (@servers)
{
# we only want folders:
next if -f $server;
print "server: $server\n";
my $maplist = $server . '/orangebox/cstrike/maplist.txt';
my $mapdir = $server . '/orangebox/cstrike/maps';
print " maplist: $maplist\n";
print " map folder: $mapdir\n";
# check if the maplist actually exists:
if(!(-e $maplist))
{
print "!!! failed to find $maplist\n";
next;
}
open MAPLIST, "<$maplist";
foreach my $map (<MAPLIST>)
{
chomp($map);
next if !$map;
# full path to the map file:
my $mapfile = "$mapdir/$map.bsp";
print "$mapfile\n";
}
}
, 내가 기대했던 결과는 무엇인가 : 병합이의 START에 만들어지고있는 것처럼 그러나
zombieescape1/orangebox/cstrike/maps/ze_stargate_escape_v8.bsp
것 같습니다 문자열 및 최종 결과는 다음과 같이됩니다.
.bspiescape1/orangebox/cstrike/maps/ze_stargate_escape_v8
따라서 .bsp
부분은 실제로 맨 왼쪽 문자열 시작 부분에 쓰여지고 있습니다. 나는 약간의 perl 경험을 가지고 있으며, 나는 이것이 단지 몇 가지 기발한 또는 조작자의 행동을 이해하지 못한다고 가정 할 수있다.
참고 : 도트 연산자로 모든 것을 연결하고 join "", $mapdir, $map, ".bsp"
같은 결과를 사용하여 "${mapdir}/${map}.bsp"
을 사용해 보았습니다.
미리 감사드립니다.
추신 : 참조를 위해, 여기에 같은 maplist.txt
보이는 내용은 다음과 같습니다 - 아마 도스 - 나는 maplist.txt
비 유닉스 라인 엔딩을 가지고 추측에는 요
zm_3dubka_v3
zm_4way_tunnel_v2
zm_abstractchode_pyramid2
zm_anotheruglyzmap_v1e
zm_app7e_betterbworld_JDfix_v3
zm_atix_helicopter_mini
zm_base_winter_beta3
zm_battleforce_panic_ua
zm_black_lion_macd_v8
zm_bunker_f57_v2
zm_burbsdelchode_b3
zm_choddarena_b12
zm_choddasnowpanic_b4
zm_citylife_V2b
zm_crazycity
zm_deep_thought_nv
zm_desert_fortress_v2
ZM_desprerados_a1
zm_doomlike_station_v2
zm_dust_arena_v1_final
zm_exhibit_night_2F
zm_facility_v1
zm_farm3_nav72
zm_firewall_samarkand
zm_fortress_b7
zm_ghs_flats
zm_gl33m4x_errata
zm_idm_hauntedhouse_v1
zm_industry_v2
zm_kruma_kakariko_village_006
zm_kruma_panic_004
zm_lila_off!ce_v4
zm_little_city_v5pf_fix
zm_moonlight_v3_pF
zm_moon_roflicious_pF_02
zm_moocbblechode_b2
zm_mountain_b2
zm_neko_abura_v2
zm_neko_athletic_park_v2
zm_novum_v3_JDfix
zm_ocx_orly_v4
zm_officeattack_b5a
zm_officerush_betav7
zm_officesspace_pfss
zm_omi_facility_pfv2
zm_penumbra_PF3
zm_raindance_ak_v2
zm_roflicious_pfcf2
zm_roy_abandoned_canals_new
zm_roy_barricade_factory
zm_roy_highway
zm_roy_industrial_complex
zm_roy_old_industrial_pF
zm_roy_the_ship_pf
zm_roy_zombieranch_night_b4
zm_survival_f2a
zm_temple_v3pf
zm_towers_v3
zm_tx_highschool_zkedit_v2
zm_unpanicv2_pF
zm_vc2_office_redone_b1
zm_wasteyard_beta3
zm_winterfun_b4a
zm_wtfhax_v6
zm_wtfhax_v6e
zm_wwt_twinsteel_v8
실행중인 OS는 무엇입니까? – ennuikiller
@ennuikiller : 리눅스 버전 2.6.39-pf2 (...) (gcc 버전 4.4.5 (Gentoo 4.4.5 p1.2, 파이 -0.4.5)) (...) – Filipe
나는 할 수 없었다. 문제를 재현하기 위해 몇 가지 시도해보십시오. 새로운 xterm을 열고 실행하십시오. 때때로 xterm의 설정이 엉망이됩니다. 동일한 프로세스가 2 번 실행될 가능성이 있습니까? 자동 플러시가 $ | 켜져 있는지 확인하십시오. = 1 – ennuikiller