avva: (Default)
[personal profile] avva
Несколько дней назад я провёл три часа в отладчике, ползая по коду отладочной версии перла под Windows XP, и всё из-за того, что под Windows, оказывается, если в cmd.exe написать

set foo="bar"

то значение переменной среды foo будет не bar, а "bar".

Из-за этого одна из стандартных возможностей Перла, опирающаяся на правильное определение переменной среды, у меня не работала. И я думал, что это из-за какого-то бага в Перле под Win32, и ползал по его исходникам с редактором в одной руке и отладчиком в другой.

В последнее время я всё чаще ощущаю солидарность с автором веблога Nick Hates Software.

Date: 2005-04-12 01:03 pm (UTC)
From: [identity profile] yuridichesky.livejournal.com
Nick Hates Software?
Больше похоже, что
Software Fucks Nick
:)

Date: 2005-04-12 01:05 pm (UTC)
From: [identity profile] kapterev.livejournal.com
Скажите, а сочетание переменной и его значения - это для примера, или вы и правда их в таком виде используете? ;)

Date: 2005-04-12 01:07 pm (UTC)
From: [identity profile] avva.livejournal.com
В смысле? Это стандартный пример такой.

У меня там было что-то вроде

set PERL5DB = "c:\some long path\somefile.pl"

Date: 2005-04-12 01:10 pm (UTC)
From: [identity profile] kapterev.livejournal.com
Простите, я не программист. У меня почему-то возникли аллюзии на аббревиатуру FUBAR.

Date: 2005-04-12 01:13 pm (UTC)
From: [identity profile] avva.livejournal.com
foo, bar и foobar - стандартные имена переменных, используемых программистами в разного рода примерах, и они действительно (согласно самой вероятной версии) восходят к аббревиатуре FUBAR.

Date: 2005-04-12 03:08 pm (UTC)
From: [identity profile] pargentum.livejournal.com
Я даже в IBM'овских редбуках такие примеры встречал.

Date: 2005-04-12 01:17 pm (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
Правильные аллюдии. Согласно The Jargon File традиция использовать имена foo и bar в качестве тестовых переменных/строковых значений has generally traced to the WWII-era Army slang acronym FUBAR.

Но привычка использовать эти имена насто-о-олько прилипчива...

Date: 2005-04-12 01:20 pm (UTC)
From: [identity profile] yuridichesky.livejournal.com
Так часто бывает, что долго ищешь сложную ошибку, а ее нет.
Можно так быстро проверить что чему равно (в виндовом терминале):
Печатаем
set foo="bar"
Потом печатаем
set
и видим, что в результате foo равняется "bar"

Date: 2005-04-12 01:22 pm (UTC)
From: [identity profile] avva.livejournal.com
Я много раз делал set и это видел, но мне и в голову не приходило, что эти вставленные "" будут передаваться приложению. Я настолько привык к тому, что "" - quoting characters, что мозг просто их отфильтровывает.

Date: 2005-04-12 02:11 pm (UTC)
From: [identity profile] livsy.livejournal.com
В Кэмелбуке, если не ошибаюсь в главе про однострочники, есть фраза типа: "Кто-нибудь вообще знает где описаны правила использования кавычек в коммандном процессоре windws?". ;)

Date: 2005-04-12 03:29 pm (UTC)
From: [identity profile] pargentum.livejournal.com
Ужас в том, что если написать "С:\Program Files\Far\Far" или даже C:\"Program Files"\Far\Far, оно кавычки все-таки откинет.

Date: 2005-04-12 03:32 pm (UTC)
From: [identity profile] avva.livejournal.com
Ой ли? Сейчас попробовал, не откинуло.

Вот сейчас попробовал

Date: 2005-04-12 03:59 pm (UTC)
From: [identity profile] pargentum.livejournal.com
CMD.EXE из поставки OS/2 в аналогичной ситуации откидывает. В обоих вариантах.

А в set не откидывает.

В винду перегружаться лень.

Возможно, я не точно описал условия опыта. Если написать указанные строки не в правой части присваивания переменной среды, а в качестве имени команды.

То есть если написать c:>"С:\Program Files\Far\Far", запустится Far

Date: 2005-04-12 04:01 pm (UTC)
From: [identity profile] avva.livejournal.com
CMD.EXE из поставки OS/2 в аналогичной

А что делает оболочка в CP/M? ;-)

То есть если написать c:>"С:\Program Files\Far\Far", запустится Far

Это да, это может быть.

Date: 2005-04-12 04:25 pm (UTC)
From: [identity profile] pargentum.livejournal.com
Обижаете.

CMD.EXE в оси и в виндах в точности одинаковый. До мелочей. Кроме того, что виндовый при запуске программ проверяет ассоциации эксплорера и поэтому может запустить .doc или .html как программу, а осевый нет.

Date: 2005-04-12 01:32 pm (UTC)
From: [identity profile] 109.livejournal.com
а раньше что, не сталкивался нкогда? достаточно ведь один раз столкнуться, чтобы больше такой ошибки не делать.

Date: 2005-04-12 01:33 pm (UTC)
From: [identity profile] avva.livejournal.com
Раньше никогда. Да нахрен мне сдались эти переменные среды в Win32.

Date: 2005-04-12 02:15 pm (UTC)
From: [identity profile] screamager.livejournal.com
В последнее время я всё чаще ощущаю солидарность с автором веблога Nick Hates Software.

Спасибо за линк, очень смешной блог.

Date: 2005-04-12 02:33 pm (UTC)
From: [identity profile] gaal.livejournal.com
This is especially sucky because sometimes you *have* to include the double quotes, e.g. when using the DOSish find.

Date: 2005-04-12 05:07 pm (UTC)

Date: 2005-04-12 08:24 pm (UTC)
From: [identity profile] mopexod.livejournal.com
Попробуй ещё так:
set a= 7
Или даже так:
set a = 7

Date: 2005-04-13 08:40 am (UTC)
From: [identity profile] avva.livejournal.com
Ааааааа!

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 28th, 2025 10:24 pm
Powered by Dreamwidth Studios