Управление модулями Perl Linux

Есть ли какие-нибудь программы, кроме CPAN для установки / компиляции модулей perl и установки их?

В основном я ищу что-то вроде Activestate PPM, Ближайшее, что я смог найти, это PPM на CPAN , но когда я пытаюсь установить, он терпит неудачу по какой-то « неизвестной » причине. Я уверен, что если я покопаюсь в выводе, то смогу выяснить, почему, но для меня это в основном греческое об ошибках.

В любом случае есть что-нибудь? Было бы хорошо, если бы у него был интерфейс GTK, потому что я использую GNOME на Ubuntu, и было бы неплохо поиграть с новыми модулями.

Что мне действительно нужно, так это возможность устанавливать и удалять модули, по крайней мере, из командной строки.

Также, можно ли создать сценарий установки модуля Perl? Например, когда кто-то устанавливает мой. Учитывая код using System; пространство имен returnObject {class myObject {public int ...

Я просмотрел this и this , и у меня есть следующий вопрос, чтобы убедиться, правильно ли я понимаю. Учитывая код

using System;

namespace returnObject
{
    class myObject
    {
        public int number { get; set; }

    }

    class Program
    {
        static void Main(string[] args)
        {

            myObject mainObj = make();
            mainObj.number = 7;
        }

        public static myObject make()
        {
            myObject localObj = new myObject();
            localObj.number = 4;
            return localObj;
        }

    }
}

, я бы ожидал, что localObj выйдет из области видимости в конце метода make и, следовательно, установка obj.number на 7 в основной функции потерпеть неудачу. Это не так. Я думаю, что прав, утверждая, что:

  • localObj - это ссылка на объект
  • localObj создается в стеке
  • localObj выходит за рамки в конце сделать метод.
  • объект, на который ссылается localObj , находится в куче.

Итак, правильно ли я полагаю, что обычно объект, на который ссылается localObj , должен был быть помечен для удаления сборщиком мусора в конце метода make, но поскольку значение ссылки было передано обратно на mainObj , static const char * strings {"AAA", "BBB", "CCC"}; С помощью макроса, такого как INIT (AAA, BBB, ...

Чтобы мой код был короче и легче менялся, я хочу заменить что-то вроде

enum{ E_AAA, E_BBB, E_CCC };
static const char *strings{"AAA", "BBB", "CCC" };

на макрос, например INIT (AAA, BBB, CCC) ; но когда я пытаюсь выполнить макрос с переменными аргументами и преобразованием в строку, я получаю сообщение об ошибке, поскольку аргументы не объявлены.

Есть идеи, как это сделать?

19
задан Brian Tompsett - 汤莱恩 28 November 2015 в 11:41
поделиться